个人资料

主页 博客 留言板 搜索
跳过导航链接首页 > 博客列表 > 博客正文

SignalR教程14-js客户端上编写用于服务器调用的代码

分类

要定义服务器可以从集线器调用的方法,请使用生成的代理的客户端属性将事件处理程序添加到集线器代理,或者如果不使用生成的代理,请调用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 });
}

songshizhao
最初发表2017/11/17 20:18:18 最近更新2017/11/17 20:18:18 959
为此篇作品打分
10