我有一个asp.net经典网站。我得到了SignalR的基本功能(一个客户端向其他客户端发送消息)。但现在我想只发送消息到特定的连接ID。SignalR发送消息到单个连接Id
我集线器:
** [HubName("chatHub")]
public class ChatHub : Hub
{
public static List<string> messages = new List<string>();
public void GetServiceState()
{
Clients.updateMessages(messages);
}
public void UpdateServiceState()
{
messages.Add(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"));
Clients.updateMessages(messages);
}
}**
asp代码:
<script type="text/javascript">
$(function() {
// creates a proxy to the health check hub
var healthCheckHub = $.connection.chatHub;
console.log($.connection.hub)
// handles the callback sent from the server
healthCheckHub.updateMessages = function (data) {
$("li").remove();
$.each(data, function() {
$('#messages').append('<li>' + this + '</li>');
console.log($.connection);
});
};
$("#trigger").click(function() {
healthCheckHub.updateServiceState();
});
// Start the connection and request current state
$.connection.hub.start(function() {
healthCheckHub.getServiceState();
});
});
问题是,我真的不知道如何发送到一个特定的ConnectionId与枢纽,因为Clients.updateMessages(消息);发送消息给他们所有人。我如何解决这个问题?
P.S:香港专业教育学院已经看了看:Send server message to connected clients with Signalr/PersistentConnection
和http://riba-escapades.blogspot.dk/2012/05/signalr-send-messages-to-single-client.html
是didnt工作。
我这样做是为了在用户登录后,connectionID将始终与用户ID相同。在我的应用程序中,我这样做是为了在用户按下发送按钮之后,我发现谁是folower,并只发送消息给那些连接ID。我不知道这是否明智之举。任何想法如何以更聪明的方式实现它? – Timsen
我见过的大多数实现都使用逻辑用户标识与活动连接标识的一对多关系映射。 –
最后一个问题,如果我发送消息给离线的connectionID,会发生什么? – Timsen