(저는 Signalrr을 처음 사용합니다)허브 한 번만 실행 방법
Signalr-core를 사용하여 실시간으로 페이지를 업데이트하는 웹 응용 프로그램을 개발하고 있습니다.
내가 걸어야 할 문제는 내가 여러 클라이언트를 실행할 때 클라이언트가 있기 때문에 한 번에 여러 번 실행되는 방법을 실행한다는 것입니다.
그래서 첫 번째 클라이언트가 허브 메소드를 호출 한 다음 계속 실행하고 연결된 모든 클라이언트에 브로드 캐스팅하는 방법이 있는지 알고 싶습니다.
이
내가 내 클라이언트와 뭘하는지입니다 :
connection.on('update', (id, Color) => {
var x = document.getElementById(id);
if (Color === "green" && x.classList.contains("red"))
{
//console.log("green");
x.classList.remove("red");
x.classList.add("green");
}
else if (Color === "red" && x.classList.contains("green"))
{
//console.log("Red");
x.classList.remove("green");
x.classList.add("red");
}});
connection.start()
.then(() => connection.invoke('updateclient', updating));
를이 내가 내 허브 뭘하는지입니다 :
public void UpdateClient(bool updating)//this must run only once
{
while (updating == true)
{
Thread.Sleep(2000);
foreach (var item in _context.Devices)
{
IPHostEntry hostEntry = Dns.GetHostEntry(item.DeviceName);
IPAddress[] ips = hostEntry.AddressList;
foreach (IPAddress Ip in ips)
{
Ping MyPing = new Ping();
PingReply reply = MyPing.Send(Ip, 500);
if (reply.Status == IPStatus.Success)
{
Color = "green";
Clients.All.InvokeAsync("update", item.DeviceID, Color);
break;
}
else
{
Color = "red";
Clients.All.InvokeAsync("update", item.DeviceID, Color);
}
}
}
}
}
내가 불분명 해요 있으면 알려 주시기 바랍니다 어떤것에 대해.
및 사전에 감사드립니다.
단순히 클라이언트에서 'updateclient'를 호출하지 마십시오. ** 처음 클라이언트 컨텍스트에 클라이언트가 나타날 때마다 서버 코드를 다시 디자인하여'updateclient' 메소드를 실행할 수 있습니다. – ibubi
와우 덕분에 많이 –
그 아이디어를 어떻게 끌어낼 수 있을까요? @ibubi –