2017-02-09 55 views
2

我正在考慮使用socketcluster來構建實時應用程序。該文檔非常清晰,但我無法找到一種方法按需編程創建一個頻道。如何在socketcluster上以編程方式創建通道?

我的需求是:作爲一個用戶,我想調用一個REST API來創建一個可以立即啓動並運行在服務器上的通道。

例如,來自客戶端調用:POST https://<myServer>/api/channels使用JSON體{ "channel": "myChannel}將在服務器上創建一個myChannel信道和(在接收到的服務器響應後)我的客戶端代碼將能夠直接訂閱:

var myChannel = socket.subscribe('myChannel'); 
myChannel.publish('myChannel', 'I am here !'); 
myChannel.watch(function (data) { 
    console.log('received data from myChannel:', data); 
}); 

我想,這個新創建的通道會用我的授權中間件作爲middlewares are defined at server level(wsServer.addMiddleware(wsServer.MIDDLEWARE_SUBSCRIBE, ...)

非常感謝您的幫助,

Pierre

回答

2

使用SocketCluster,通道會自動創建和銷燬,因此您無需管理其生命週期。如果至少有一個客戶訂閱了該頻道(基於頻道名稱),則會在後端創建頻道,並且一旦所有客戶斷開連接或取消訂閱,頻道將自動銷燬。 SC也可以解釋失敗案例 - 例如如果互聯網連接意外丟失。

SC旨在高效地創建和銷燬大量獨特的頻道。每個用戶可以擁有數百個獨特頻道(所以可能有數千甚至數百萬個獨立頻道)。如果通道閒置並且每個通道的內存佔用量很小,則通道不消耗任何CPU。

SC中的通道不是消息隊列(不同於RabbitMQ,NSQ,Kafka,Stomp提供的); SC不會將消息存儲在持久隊列中(儘管您可以使用自己的持久性邏輯來擴展SC)。

相關問題