我试图从自定义WebSockets切换到PubNub。在我的应用程序中,我需要用户一次订阅多个频道,所以我认为多路复用是要走的路。问题是,当我想同时订阅4个以上的频道时,我会得到无穷无尽的CORS错误。订阅一个接一个的频道与之间的延迟没有任何区别。我有"流控制器"已启用扩展程序。
答案 0 :(得分:0)
https://www.pubnub.com/docs/web-javascript/presence
订阅多个频道并提供状态时,例如:
pubnub.subscribe({
channel: "ch1,ch2,ch3",
message: function(message) {
console.log('message', message);
},
state: {
age: 67,
username: 'rplant@ledzep.com',
full: 'Robert Plant',
country: 'UK',
latlong: '51.5072° N, 0.1275° W'
profile_pic: 'http://somewebsite.com/images/rplant.png'
}});
...状态被添加到该用户的每个频道。每个频道都有每个用户自己的状态。在上面,三个通道中的每一个都使用相同的状态数据进行初始化,但是当您设置状态时,例如:
pubnub.state({
channel: 'ch2',
uuid: 'rplant',
state: {'full_name' : 'Bobby Plant'},
callback: function(m){console.log(JSON.stringify(m))}
});
...当您使用PUBNUB.int
初始化PubNub时,您可以按照为其设置的UUID指定单个频道(或多个频道)和用户。
对于状态大小限制,发布消息的消息限制为32KB,对于状态事件也是如此,因为它们只是在状态通道上发布的消息。
但总的来说,你应该把状态保持在最低限度。它不适用于大量数据。文件(图像)应存储在分布式文件系统中,并通过PubNub传递URL。
答案 1 :(得分:0)
我发现了一个问题。状态太大,它有用户详细信息,包括照片缩略图。它的大小约为6000个字符。它距离32kb还很远,我没有读到它的不同限制,它发生在我订阅至少5个频道时。是否存在一些场景逻辑背后的每个通道数量的状态倍增? 5 * ~6000接近32k的极限。