angular - 如何找到打字稿signalR的onDisconnect方法
问题描述
我有一个使用 signalR 库的 Angular 客户端"@aspnet/signalr": "^1.1.4"
我只需要它来接收来自 ASP.net 服务器的通知。所以我构建并启动 hubConnection ,
private hubConnection: signalR.HubConnection;
然后订阅来自服务器的不同消息
this.hubConnection.on("SomeMessage", (data: MyDto) =>
myActions()
);
一切正常并接收消息,但经过几个小时的工作后发生了一些事情(我想是网络)并且在服务器上触发方法
public override async Task OnDisconnectedAsync(Exception e)
这很好,但我想在客户端处理断开连接。我阅读了这个和这个以及更多的答案,但我hubConnection
没有这些答案中提到的disconnect
方法或属性。hub
所以我会很感激他们可能在哪里的任何提示。最好在打字稿中,而不是在 html 中。
更新
好吧,正如建议的那样,我将 signalR 包更改为"@microsoft/signalr": "^5.0.4"
by I still can't find onDisconnect
event
我构建了一个实例,signalR.HubConnection
如下所示
private buildConnection(url: string, token: string) {
this.hubConnection = new signalR.HubConnectionBuilder()
.withUrl(url, { accessTokenFactory: () => token })
.build();
}
但是这个实例没有 onDisconnect 事件。
解决方案
正如所评论的,升级到较新的版本,它现在有一个 OnDisconnect 事件和一种在客户端访问原因的方法。
SignalR 2.1 向服务器 OnDisconnect 事件添加了一个过载,该事件指示客户端是否故意断开连接而不是超时。如果客户端显式关闭连接,则 StopCalled 参数为 true。在 JavaScript 中,如果服务器错误导致客户端断开连接,错误信息将作为 $.connection.hub.lastError 传递给客户端。
$.connection.hub.disconnected(function () {
if ($.connection.hub.lastError)
{ alert("Disconnected. Reason: " + $.connection.hub.lastError.message); }
});
推荐阅读
- css - 如何在 React Js 中为不同的布局管理不同的 css 样式?
- javascript - 如何集成 AngularJS 和 d3.js
- java - 打印 List/String 类型的 Arraylist 的所有元素
- javascript - 如何使用 jQuery UI 使 SVG 标签图像可调整大小?
- python - 使用 split() 清理带有恶意元素的数据帧
- mysql - 一个rest api会消耗服务器资源吗
- php - 哪个更快,fwrite 到文件或插入到 mysql 中?
- google-translate - 带有 notranslate 标签的 Google Translation API 行为不正确
- qt - Qt - 如何编辑 QByteArray 长度和包含?
- python - List.split() 不是跨平台的?