我可以检测到客户端是否已与服务器断开连接。但是我的问题是;我的客户如何知道它是否仍连接到SignalR服务器。
我在客户端具有此代码以连接到服务器。连接后,我将状态更改为已连接。但是,如果我关闭SignalR服务器并立即收到如下错误:
zone.js:3243 GET http://localhost:9090/signalr/negotiate?clientProtocol=2.1&connectionData=%5B%7B%22name%22%3A%22apphub%22%7D%5D&_=1563774410720 净:: ERR_CONNECTION_REFUSED
我实际上可以使用它来通知我的客户端我不再连接到服务器,但是我不知道从哪里获得。请在下面查看我的代码以了解如何连接:
public initializeSignalRConnection(): void {
this.connection = $.hubConnection('http://localhost:9090');
this.proxy = this.connection.createHubProxy('appHub');
this.proxy.on('clientPipeline', serverMessage =>
this.onMessageReceived(serverMessage)
);
this.proxy.on('connectionMessage', serverMessage =>
this.onConnection(serverMessage)
);
this.connection.start().done((data: any) => {
this.broadcastMessage();
});
}
this.connection.start()仅在SignalR服务器正在运行时发生。但是,如果它没有运行,我想获取错误消息。
我正在考虑这样的事情:
this.connection.start().done((data: any) => {
this.broadcastMessage();
}, (err_ => {
"CONNECTION ERROR"
});
但这不起作用。
您能帮我吗?谢谢。
答案 0 :(得分:0)
您可以检查连接中stateChanged的更改,并显示您想要通知用户的任何info / popup / modal / etc。
$.connection.hub.stateChanged(function (status_value) {
if (status_value.newState == 0) { //Attempting a new connection
}
else if (status_value.newState == 1) { //Established a connection
}
else if (status_value.newState == 2) { //Attempting reconnect
}
else if (status_value.newState == 4) { //Connection lost
}
});