【发布时间】:2020-09-23 11:17:42
【问题描述】:
在我的项目中,如果 Internet 连接丢失,我需要重新连接到 SignalR Web Socket。
我正在使用 Angular Ionic V4,并安装了网络信息插件。
在插件的“已连接”事件中 - 我正在尝试使用原始令牌调用 this._hubConnection.start()。似乎建立了一个新连接,但每次我从集线器获取数据时,事件都会运行两次(或 X 次,具体取决于我进行了多少次重新连接)。
我相信发生的事情是 SignalR 在同一个键下创建另一个套接字,当一条消息发送到指定的键时 - 它被广播到具有相同键的所有连接,因此复制了事件。
我的问题是 - 有没有办法“重新连接”到现有的套接字而不是“建立一个额外的连接”?
编辑:
在尝试升级到@microsoft/signalr 后,我得到了以下结果:
它似乎在网络离线时尝试重新连接,当网络恢复时它会连接和断开连接。
我尝试调试我的 SignalR 服务器。这是在客户端调用事件的方法:
public async Task Enqueue(int processId)
{
var processEnqueueAppointmentResults = await _processesService.Enqueue<object>(processId);
await Clients.User($"PROCESS_{processId}").SendAsync("ProcessEnqueued", processEnqueueAppointmentResults);
}
调试器进入 Enqueue 一次,在客户端 - 我收到 4 个重复的日志(意味着事件被触发了 4 次)
【问题讨论】:
-
你用什么角度包来signalR?
-
@aspnet/signalr
标签: angular ionic-framework .net-core websocket signalr