gpt4 book ai didi

c# - Signalr Connect 断开并重新连接

转载 作者:行者123 更新时间:2023-11-30 14:13:12 31 4
gpt4 key购买 nike

我想确保我为 SignalR 库正确实现了组功能。

我所做的是允许用户为特定项目寻求帮助。启动项目的用户可以将其他用户添加到他们项目的协作表中。

Collaboration 
(
UserID Uniqueidentifier,
ProjectID INT
)

如果任何一个用户进入协作模式,我想将该用户添加到一个组中,这样如果另一个用户登录并进入协作模式,他们将被添加到同一个组中。这些组始终命名为 ProjectID

因此,当用户登录并打开一个项目(如果该项目在协作表中)时,我将它们添加到 Groups.Add(Conext.ConnectionId,projID);


这是我的问题:

当用户从客户端连接并调用 OnConnected 时,如果不存在具有 projID 的组,这会引发错误还是信号器会即时创建该组?

    public override Task OnConnected(string projID)
{
return Groups.Add(this.Context.ConnectionId, projID);
}

当客户端关闭浏览器时,是调用 OnDisconnected 的时候吗?如果该用户由于某种原因不在上述 projID 组中,是否会抛出错误或信号器会处理此问题?

    public override Task OnConnected(string projID)
{
return Groups.Add(this.Context.ConnectionId, projID);
}

对于 OnReconnected,这是否意味着如果用户注销并执行其他操作然后重新登录,他们将自动添加回他们在连接丢失之前所在的组?

    public override Task OnReconnected(string projID)
{
return Clients.Group(projID).rejoined(Context.ConnectionId,
DateTime.Now.ToString());
}

对于上面的所有方法,我是否需要调用每个重写方法的基方法?

最佳答案

  1. SignalR 将在您调用 Groups.Add() 时创建组第一次针对特定的 projID。它不会引发错误。
  2. OnDisconnected 在连接断开时被调用。如果你调用 Stop() 有一个干净的断开连接和 OnDisconnected方法被立即调用。如果你只是关闭浏览器,OnDisconnected 方法通常会在延迟大约 30 秒(有一个配置开关来控制这个)
  3. 用户根据他们的连接 ID 绑定(bind)到特定的组。如果用户返回时必须使用不同的连接 ID再次将其添加到适当的组中。你可以看看SignalR 提供的聊天示例,以了解此类情况如何得到处理。

关于c# - Signalr Connect 断开并重新连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14924733/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com