【问题标题】:Working with Groups in SignalR core在 SignalR 核心中使用组
【发布时间】:2018-02-22 13:11:32
【问题描述】:

我创建 Hub 类,当新用户连接调用函数 OnConnected 时:

public class ReportChat : Hub
{
    public async Task OnConnected()
    {
        string name = Context.User.Identity.Name;
        await Groups.AddAsync(Context.ConnectionId, name);
    }
}

但是当连接第二个用户时,或者有时,当我刷新页面时 SignalR 在前端生成错误:没有与该 ID 的连接。

使用传输协议:signalR.TransportType.LongPolling

connection = new signalR.HubConnection("/ReportJson", { transport: signalR.TransportType.LongPolling });
        connection.on('SendReport',
            function(data) {
                console.log(data.value.name);
            });
        connection.start().then(() => {
            connection.invoke('OnConnected');
            hubConnectionEstablished = true;
        });

【问题讨论】:

  • 如果您刷新页面,客户端会获得一个新 ID。你应该自己处理这个
  • 如果您有多个服务器,您需要打开粘性。

标签: signalr signalr.client asp.net-core-signalr signalr-2


【解决方案1】:

当您刷新页面时,您将断开连接并重新连接,因此将为该客户端生成一个新的 connectionId。 您可以通过在 OnConnected 和 OnDisconnected 方法中设置断点来验证这是否正在发生。

【讨论】:

    猜你喜欢
    • 2018-09-21
    • 2019-08-18
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-08
    • 2019-07-19
    相关资源
    最近更新 更多