【发布时间】:2021-02-03 11:19:30
【问题描述】:
我有一个实时聊天,可以同时连接多个人。所有公共消息都可以正常工作,但有时对特定 ID 的私人消息不起作用。我相信我把它缩小到人们断开连接并重新连接到他们连接到不同实例的时候(也许 IIS 已经回收并启动了一个新的集线器)。 我以为我已经修好了,但我没有,现在我在这里,因为我被卡住了。我认为可以解决的问题是更改 startChat() 函数中的连接变量,以使用正确的信息刷新它。 这是代码的精简版本,因为我认为其余部分不是必需的。
问题是,当连接到 signalR 时,直接向他们发送消息的接收者无法通过,即使发送给它的聊天 ID 是正确的。可能的集线器/套接字不匹配?
var chat = $.connection.chatHub;
$(document).ready(function () {
// Start the chat connection.
startChat();
//restart chat if disconnected
$.connection.hub.disconnected(function () {
setTimeout(startChat(), 5000);
});
$.connection.hub.error(function (error) {
$('#messagebar').html('Chat ' + error + '. If this message doesn\'t go away, refresh your page.');
});
chat.client.addToChat = function (response) {
$('#chat-' + response.Type).prepend(response.Message);
};
});
function startChat() {
chat = $.connection.chatHub;
$.connection.hub.start().done(function () {
//get recent chat from db and insert to page.
//also saves user's chat id to their user for lookup when private messaging
$.ajax({
method: 'POST',
url: '/api/Chat/SetupChat/'
});
$('#messagebar').html('Connected to chat.');
});
}
任何帮助表示赞赏,谢谢。
【问题讨论】:
-
无法跟上最后一段 - 您仍然无法将消息推送到新创建的连接 ID 吗?
-
另一个快速的问题 - 是否可以切换到用户地图而不是直接使用连接 ID? docs.microsoft.com/en-us/aspnet/core/signalr/groups
标签: javascript c# jquery .net signalr