Я внедрил 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);
}
Мой текущий список сообщений заполняется.Я в порядке здесь.Но я не могу пересылать сообщения на страницу.
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);