与1个以上的用户一起运行Azure SignalR时,我在聊天网站上遇到问题。例如
用户A登录到系统,可以正常发送/接收消息,用户B也登录并获得JavaScript错误。如果用户A关闭浏览器窗口,则用户B可以很好地发送/接收消息,反之亦然。
这是我正在使用的技术:
错误似乎来自SignalR Javascript客户端。
这是我收到的Google Chrome控制台错误消息:
我的JS代码如下:
function setChatConnection() {
var chatConnection = new signalR.HubConnectionBuilder()
.withUrl('/chat')
.configureLogging(signalR.LogLevel.Information)
.build();
bindConnectionMessage(chatConnection);
chatConnection.start()
.then(function () {
chatConnection.send('joingroup');
})
.catch(function (error) {
console.error(error.message);
});
}
我进行了一些调试,并且似乎在错误发生之前进入了chatConnection.send('joingroup')方法,尽管我认为这是一个红色的鲱鱼,我在集线器的OnConnectedAsync方法中添加了一些调试功能,并且可以确认它也不被调用。
我的集线器没有任何花哨的地方,我添加了一些日志记录,当第二个用户尝试使用聊天时,看起来集线器可能没有被呼叫
public override Task OnConnectedAsync()
{
return base.OnConnectedAsync();
}
public async void JoinGroup()
{
await Groups.AddToGroupAsync(Context.ConnectionId, "Test");
}
有人知道为什么会这样吗?我还尝试了升级到付费的Azure SignalR层,但是仍然遇到相同的问题。