在SignalR集线器中使用jquery回调而不是RPC
Use jquery callback instead of RPC in SignalR hub
我需要从不同的地方多次订阅同一个集线器,例如:
function firstPlace(targetHub){
targetHub.client.onSomeEvent = function(data){
alert('hello from first place');
};
}
function secondPlace(targetHub){
targetHub.client.onSomeEvent = function(data){
alert('hello from second place');
};
}
firstPlace($.connection.clientHub);
secondPlace($.connection.clientHub);
我希望拥有基于回调的功能(比如jquery回调)。
function firstPlace(targetHub){
targetHub.client.onSomeEvent.add(function(data){
alert('hello from first place');
});
}
function secondPlace(targetHub){
targetHub.client.onSomeEvent.add(function(data){
alert('hello from second place');
});
}
firstPlace($.connection.clientHub);
secondPlace($.connection.clientHub);
我知道使用一些代理对象可以很容易地实现它,但也许还有一些我不知道的javascript魔力?
您可以像一样使用我的EventAggregator代理
function firstPlace() {
signalR.eventAggregator.subscribe(MyApp.SomeEvent, this.onSomeEvent, this);
}
function secondPlace() {
signalR.eventAggregator.subscribe(MyApp.SomeEvent, this.onSomeEvent, this);
}
当然,图书馆有更多的特色,但这是之一
https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki
如果你不帮助自己,其他人也不会=)。这是解决我问题的代码:
signalR.FunctionToCallback = new function() {
self.MapCallback = function (sourceFunction, targetCallback) {
if (!sourceFunction) {
sourceFunction = function () {
sourceFunction.callbacks.fireWith(this, $.makeArray(arguments));
};
}
if (!sourceFunction.callbacks) {
sourceFunction.callbacks = $.Callbacks();
}
sourceFunction.callbacks.add(targetCallback);
return sourceFunction;
};
};
用法示例:
function firstPlace(targetHub){
targetHub.client.onSomeEvent = ko.FunctionToCallback.MapCallback(targetHub.client.onSomeEvent,function(data){
alert('hello from first place');
});
}
function secondPlace(targetHub){
targetHub.client.onSomeEvent = ko.FunctionToCallback.MapCallback(targetHub.client.onSomeEvent, function(data){
alert('hello from second place');
});
}
firstPlace($.connection.clientHub);
secondPlace($.connection.clientHub);
相关文章:
- AngularJS:我可以跳过函数参数回调吗
- 要求未定义JS回调参数
- MeteorJS:在带有回调的vzaar api上正确使用wrapAsync
- 自引用回调
- 测试Angular Service解决错误回调中的promise
- 如何将一个JavaScript函数回调为多个函数
- JavaScript回调函数
- 用于回调的javascript参数
- 将json回调数据转换为日期
- 承诺在非节点式回调上使用Bluebird
- 如何在回调函数中执行流
- 回调函数中传递参数的困难(Google Map API Markers)
- Soundcloud Javascript SDK 3.0-回调无法读取属性'connectCallback
- 如何使用jqueryAJAX从页面中回调多个变量
- jquery Onclick函数带有导致双击的回调排序函数
- Javascript点击事件回调不起作用
- 一旦加载并渲染了角度引导typeahead,就使用回调
- 在SignalR集线器中使用jquery回调而不是RPC
- Json Rpc回调函数
- 向 JSON RPC 回调函数添加参数