ASP.NET Core SignalR 中的客户端生命周期事件

Posted

技术标签:

【中文标题】ASP.NET Core SignalR 中的客户端生命周期事件【英文标题】:Client Lifecycle events in ASP.NET Core SignalR 【发布时间】:2018-12-20 16:41:45 【问题描述】:

我目前正在将一个项目从 ASP.NET SignalR 2.2.3 (OWIN) 升级到 ASP.NET Core SignalR 1.0.2 (Kestrel)。

SignalR 2.2.3 支持多个客户端 lifetime events,例如 reconnectingconnectionSlowstateChanged、...。 我们的 javascript 客户端使用了这些事件并显示了诸如“重新连接”或“连接当前很慢”之类的内容。

在 ASP.NET Core SignalR 中是否存在或将存在等价物?到目前为止,我只发现了两个生命事件:

let c = new signalR.HubConnectionBuilder().("/signalR");
c.connection.onClose(function(error) );
c.connection.onReceive(function(data) );

我也看到了this question,但用户只要求onClose 事件。

不,我不是在寻找服务器端的lifetime events。

更新 - 重新连接事件

好的,因为根据docs 和这个Github issue 没有重新连接(还没有?),我可以接受缺少的ReconnectingReconnected。但是connectionSlowstartingstateChanged 呢?

【问题讨论】:

【参考方案1】:

目前HubConnection 似乎只有 2 个状态:

断开连接 已连接

这些状态通过连接中的 state 属性公开,但没有其他任何状态。

但是,有一个ILogger 实例在整个标准操作中被广泛使用。可以通过configureLogging 方法将自定义ILogger 提供给HubConnectionBuilder。您可以使用自定义记录器来捕获所有单个事件并做出相应的反应。

【讨论】:

以上是关于ASP.NET Core SignalR 中的客户端生命周期事件的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core SignalR:集线器Hubs

ASP.NET Core SignalR :SignalR Javascript 客户端

ASP.NET Core SignalR 下:SignalR Javascript 客户端

在 ASP.NET Core 中使用 SignalR

ASP.NET Core Angular - 根据登录用户发送不同的 SignalR 消息

带有 SignalR 集线器的 ASP.NET Core 中的范围服务