【发布时间】:2018-12-18 14:57:30
【问题描述】:
我在我的项目中实现了 SignalR。但是我在发送私人消息时遇到问题。我正在从页面发送“toConnectionID”。
ChatHub.cs
public void LoadPrivateMessages(string toUserName,string toConnectionID)
{
var chatHub = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
string fromUserName = Context.QueryString["userName"].ToString();
string fromConnectionID = Context.ConnectionId;
List<ChatMessageDetail> currentMessages = cachePrivateMessages.Where(x => x.ToUserName == toUserName && x.FromUserName == fromUserName && x.ToConnectionID==toConnectionID && x.FromConnectionID==fromConnectionID).ToList();
chatHub.Clients.Client(toConnectionID).privateMessagesHistory(currentMessages);
}
我的 currentMessages 列表正在填满。我在这里很好。但我无法将消息带到页面。
Javascript
chatHub.client.privateMessagesHistory = function (data) {
console.log(data);
};
在这段 JavaScript 代码之后,我的控制台屏幕为空。
编辑:
这是我在 document.ready 函数中的连接代码。其次是发送接收者的信息。
var chatHub = $.connection.chatHub;
$.connection.hub.qs = { "userName": "@Session["userName"]" };
$.connection.hub.start().done(function () {
console.log("Connection OK !");
});
$(document).on('click','.onlineUser', function () {
var userName = $(this).attr('id');//That is which user to send(Receiver)
var toConnectionID = $(this).attr('connectionID');
chatHub.server.loadPrivateMessages(userName, toConnectionID);
$('.privateMessagediv').show();
$('.userName').html("");
$('.userName').append("<h4>" + userName + "</h4>");
$('.btnSendingPrivateMessage').attr('id', userName);
$('.btnSendingPrivateMessage').attr('connectionid', toConnectionID);
chatHub.client.privateMessagesHistory = function (data) {
$('#privateChatBox').append(data);
};
});
编辑 2:
我解决了问题。
chatHub.Clients.Client(fromConnectionID).privateMessagesHistory(currentMessages);
而不是
chatHub.Clients.Client(toConnectionID).privateMessagesHistory(currentMessages);
【问题讨论】:
-
你能显示你的客户端注册吗?我还想检查另外 2 个步骤
-
@reckface 当然。
-
@reckface 我添加了。
标签: signalr signalr-hub signalr.client