2015-12-02 67 views
0

我有一個具有消息功能的rails應用程序。爲了使它成爲一項實時服務,我設置了Faye(NodeJS版本),以便只允許來自我的Rails應用程序的傳入消息。它通過Rails傳遞一個特定的令牌來實現這一點,並且如果令牌與主令牌相匹配,那麼它會推送該傳入的消息。限制客戶訂閱Faye nodejs中的頻道

我現在想要做的是限制誰可以訂閱特定頻道。主要是爲了讓技術愛好者不檢查頻道名稱,然後擺弄它訂閱他們不應該訪問的頻道。

這裏是服務器https://gist.github.com/aliuk2012/e5c82aec6b7f0fba53d9的要點,你會看到第40行,我試圖簡單地拒絕訂閱。我得到控制檯日誌,但如果我將消息推送到任何通道,用戶仍然會收到消息。

我只需要一些關於如何限制/取消訂閱用戶的指導,如果他們嘗試訂閱頻道。稍後,我正計劃將來自Rails應用程序的CSRF令牌或從客戶端傳遞給特定用戶的某個特定用戶的faye,然後在用戶訂閱該頻道之前調用rails端點來驗證用戶。

非常感謝

+0

你有沒有想過使用Pusher.com對於這一點,而不是維護自己的服務器王菲?它使私人頻道,並權威性所以SO easy。https://pusher.com/docs/client_api_guide/client_private_channels – rlarcombe

+0

是的謝謝,但寧願保持它在內部。 –

+0

絕對便宜!:-) – rlarcombe

回答

0

從文檔。

engine.subscribe(的clientId,通道,函數(成功)

bayeux.on('subscribe', function(clientId,channel,cb){ 
     console.log('Lets reject this client ' + clientId); 
     cb(false); 
     return false; 
    });` 
+0

你有鏈接指向你的文檔嗎? 我試過在我的第40行,但它抱怨cb(我假設是回調)未定義 –

+0

http://faye.jcoglan.com/node/engines.html – Gary

+0

看起來這更像是建立自己的引擎,但也許這會導致你走上正確的道路...... – Gary