Signalr 与信号机核心团队合作

Signalr 与信号机核心团队合作,signalr,signalr.client,asp.net-core-signalr,signalr-2,Signalr,Signalr.client,Asp.net Core Signalr,Signalr 2,当新用户连接调用函数OnConnected时,我创建Hub类: public class ReportChat : Hub { public async Task OnConnected() { string name = Context.User.Identity.Name; await Groups.AddAsync(Context.ConnectionId, name); } } 但当连接到第二个用户时,或者有时,当我刷新页面时,信

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

public class ReportChat : Hub
{
    public async Task OnConnected()
    {
        string name = Context.User.Identity.Name;
        await Groups.AddAsync(Context.ConnectionId, name);
    }
}
但当连接到第二个用户时,或者有时,当我刷新页面时,信号器在前端生成错误:没有使用该ID的连接

使用传输协议:signal.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;
        });

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

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

如果刷新页面,客户端将获得一个新id。如果有多台服务器需要打开粘性,则应自行处理。如果刷新页面,客户端将获得一个新id。如果有多台服务器需要打开粘性,则应自行处理。