要定义服务器可以从集线器调用的方法,请使用生成的代理的客户端属性将事件处理程序添加到集线器代理,或者如果不使用生成的代理,请调用on方法。 参数可以是复杂的对象。方法名称匹配是不区分大小写的,例如服务器上, Clients.All.addContosoChatMessageToPage可以执行客户端上的AddContosoChatMessageToPage, addContosoChatMessageToPage,或者addcontosochatmessagetopage方法.
在客户端上使用代理定义方法
var contosoChatHubProxy = $.connection.contosoChatHub;
contosoChatHubProxy.client.addContosoChatMessageToPage = function (userName, message) {
console.log(userName + ' ' + message);
};
$.connection.hub.start()
.done(function(){ console.log('Now connected, connection ID=' + $.connection.hub.id); })
.fail(function(){ console.log('Could not Connect!'); });
或者:
$.extend(contosoChatHubProxy.client, {
addContosoChatMessageToPage: function(userName, message) {
console.log(userName + ' ' + message);
};
});
在客户端上不使用代理定义方法
var connection = $.hubConnection();
var contosoChatHubProxy = connection.createHubProxy('contosoChatHub');
contosoChatHubProxy.on('addContosoChatMessageToPage', function(userName, message) {
console.log(userName + ' ' + message);
});
connection.start()
.done(function(){ console.log('Now connected, connection ID=' + connection.id); })
.fail(function(){ console.log('Could not connect'); });
服务器调用如下:
public class ContosoChatHub : Hub
{
public void NewContosoChatMessage(string name, string message)
{
Clients.All.addContosoChatMessageToPage(name, message);
}
}
使用复合参数,方式如下:
var contosoChatHubProxy = $.connection.contosoChatHub;
contosoChatHubProxy.client.addMessageToPage = function (message) {
console.log(message.UserName + ' ' + message.Message);
});
不用代理:
var connection = $.hubConnection();
var contosoChatHubProxy = connection.createHubProxy('contosoChatHub');
chatHubProxy.on('addMessageToPage', function (message) {
console.log(message.UserName + ' ' + message.Message);
});
在服务器上定义复合对象原型
public class ContosoChatMessage
{
public string UserName { get; set; }
public string Message { get; set; }
}
在服务器上调用:
public void SendMessage(string name, string message)
{
Clients.All.addContosoChatMessageToPage(new ContosoChatMessage() { UserName = name, Message = message });
}