SignalR:生成的代理与动态创建的集线器文件

问题描述 投票:3回答:1

SignalR集线器代理生成器的输出是否与动态生成的集线器代理文件基本相同?如果没有,有什么区别?

关于我的问题的一些背景:由于执行期间的依赖性问题,我正在努力使用命令行工具创建集线器代理,我认为获取动态生成的文件可能是一种更简单的方法。

c# asp.net proxy signalr
1个回答
6
投票

正如on this ASP.NET page所述,关于使用带SignalR的集线器:

生成的代理及其为您做的事情

您可以编写JavaScript客户端以与SignalR服务进行通信,无论是否有SignalR为您生成的代理。代理为您做的是简化用于连接的代码的语法,编写服务器调用的方法,以及调用服务器上的方法。

当您编写代码来调用服务器方法时,生成的代理使您可以使用看起来就像执行本地函数的语法:您可以编写serverMethod(arg1,arg2)而不是invoke('serverMethod',arg1,arg2)。如果您错误地键入服务器方法名称,则生成的代理语法还会启用即时且可理解的客户端错误。如果您手动创建定义代理的文件,您还可以获得IntelliSense支持,以编写调用服务器方法的代码。

长话短说:

如果您输入错误的SignalR集线器或方法名称,这会使您的生活更加轻松。

使用代理:

var contosoChatHubProxy = $.connection.contosoChatHub;
contosoChatHubProxy.client.addContosoChatMessageToPage = function (name, message) {
    console.log(name + ' ' + message);
};

没有代理:

var connection = $.hubConnection();
var contosoChatHubProxy = connection.createHubProxy('contosoChatHub');
contosoChatHubProxy.on('addContosoChatMessageToPage', function(name, message) {
    console.log(name + ' ' + message);
});

如果您需要生成一次Proxy文件而不是在运行时生成它,可以使用this section,它允许您事先生成它(用于缓存或捆绑行为)。

© www.soinside.com 2019 - 2024. All rights reserved.