Pusher:如何绑定数百个事件?

sam*_*mol 1 pusher

推送库的工作原理如下

var channel = pusher.subscribe('test_channel');
channel.bind('my_event', function(data) {
  alert(data.message);
});
Run Code Online (Sandbox Code Playgroud)

然而:我能做到吗?

var channel = pusher.subscribe('test_channel');
channel.bind(['my_event1', 'my_event2'....'my_event100'], function(data) {
  alert(data.message);
});
Run Code Online (Sandbox Code Playgroud)

在我的用例中,我有一个频道,有许多不同的事件,每个客户端可能希望同时订阅 100 个事件。

leg*_*ter 5

该函数的签名channel.bindString channelName, Function callbackpusher-js source)。你不能传入一个Arrayof Channels`。

如果您希望调用相同的函数,那么您需要传递对该函数的引用并bind多次调用:

var channel = pusher.subscribe('test_channel');
var callback = function(data) {
  alert(data.message);
};

var eventName;
for( var i = 0; i < 100; ++i ) {
  eventName = 'my_event' + ( i + 1 );
  channel.bind( eventName, callback );
}
Run Code Online (Sandbox Code Playgroud)

JS 的单线程特性将等同于这些事件绑定同时发生。

您当然可以创建自己的辅助函数来允许bind( Array eventNames, Function callback ).