2016-01-06 81 views
2

我試圖從自定義WebSockets切換到PubNub。在我的應用程序中,我需要用戶一次訂閱多個頻道,所以我認爲多路複用是一種方式。問題是,當我想一次訂閱4個以上的頻道時,我會遇到無盡的CORS錯誤。逐一訂閱頻道,但兩者之間沒有任何區別。我啓用了「流控制器」擴展。PubNub複用問題

enter image description here

+1

您的CORS錯誤與複用或沒有任何關係。遠程端點拒絕請求 - 您需要配置它以允許跨源請求。 –

+0

[可以通過PUBNUB發佈可能的重複。起源是不允許的訪問控制允許來源](http://stackoverflow.com/questions/12843178/cant-publish-via-pubnub-origin-is-not-allowed-by-access-control-allow-原產地) –

+0

提供原產地沒有區別。在當前版本中它似乎是默認選項,只要訂閱了4個或更少的頻道,我就可以發佈。 –

回答

0

我發現了一個問題。狀態太大,它有用戶的詳細信息,包括照片縮略圖。它的大小是〜6000個字符。距離32kb仍然很遠,我對它的任何限制都沒有看到,當我訂閱了至少5個頻道時發生了這種情況。現場邏輯背後是否有一些能夠擴大每個通道數量的狀態大小? 5 *〜6000接近32k限制。

0

PubNub存在用戶狀態數據

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: '[email protected]', 
    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。