将 1.x 的 onDisconnected() 方法处理到 SignalR 2.1.2
本文关键字:处理 SignalR 方法 onDisconnected | 更新日期: 2023-09-27 18:33:12
我之前在 Asp.Net-MVC项目中实现了信号R 1.1.3版本,但现在我需要用最新版本更新信号R版本,它是信号R 2.1.2,在信号R 2.1.2内部,问题是它在集线器类中不支持onDisconnected()
方法。 所以我可以在我的项目中处理信号 R 的连接事件。
在版本 2.x 中,连接事件返回 Task 采用 bool stopCalled 的输入参数。 你只需要更新你的方法来返回任务,这是由base返回的。打开已断开连接(停止调用)。
文档
public override Task OnDisconnected(bool stopCalled)
{
// Add your own code here.
// For example: in a chat application, mark the user as offline,
// delete the association between the current connection id and user name.
return base.OnDisconnected(stopCalled);
}
编辑
我相信当前的 SignalR 文档实际上可能错误地建议您使用没有 bool stopCall 参数的 OnDisconnected()。 但是,查看 HubBase 的源代码(Hub 继承自),您可以找到在 2.x 中声明如下的 OnDisconnected 方法。
/// <summary>
/// Called when a connection disconnects from this hub gracefully or due to a timeout.
/// </summary>
/// <param name="stopCalled">
/// true, if stop was called on the client closing the connection gracefully;
/// false, if the connection has been lost for longer than the
/// <see cref="Configuration.IConfigurationManager.DisconnectTimeout"/>.
/// Timeouts can be caused by clients reconnecting to another SignalR server in scaleout.
/// </param>
/// <returns>A <see cref="Task"/></returns>
public virtual Task OnDisconnected(bool stopCalled)
{
return TaskAsyncHelper.Empty;
}