这里我得到了signaler的位代码,并包含在内。
客户端代码
$(function () {
// Proxy created on the fly
var chat = $.connection.chat;
// Declare a function on the chat hub so the server can invoke it
chat.addMessage = function (message) {
$('#messages').append('<li>' + message + '');
};
$("#broadcast").click(function () {
// Call the chat method on the server
chat.send($('#msg').val());
});
// Start the connection
$.connection.hub.start();
});
服务器代码
public class Chat : Hub
{
public void Send(string message)
{
// Call the addMessage method on all clients
Clients.addMessage(message);
}
}
只需看到这一行,Clients.addMessage(message);
addMessage()将在客户端调用addMessage(?
Signaler中是否有任何规定,比如在将数据传递到特定客户端之前,我们是否可以确定客户端已连接。
在向客户端发送数据之前,我想检测特定的客户端是否已连接。如果客户端没有连接,那么我会将该特定用户的数据存储在数据库中。请帮助我提供如何检测特定客户端是否连接的示例代码?感谢
我对此有一个建议。在Chat
类中声明一个static List
。对OnConnect
事件使用以下代码。
public override Task OnConnected() {
string connectionId = Context.ConnectionId;
// Store this connectionId in list -- This will be helpful for tracking list of connected clients.
return base.OnConnected();
}
并采用CCD_ 5方法。
public override Task OnDisconnected() {
string connectionId = Context.ConnectionId;
// Remove this connectionId from list
// and save the message for disconnected clients.
// Maintain list of disconnected clients in a list, say ABC
return base.OnDisconnected();
}
在send
上,方法仅对连接的客户端执行。
public void Send(string message){
// Call the addMessage method on all clients
Clients.AllExcept(ABC.ToArray()).addMessage(message);
}
您可以参考此链接