2013-05-19 28 views
5

我有40個類別,每個類別都有10-100個子類別。默認情況下,用戶會聽所有類別和子類別。我想讓每個用戶都能夠選擇從整個類別或特定子類別中解除綁定。所以,現在我所擁有的是每個類別都是一個頻道,而每個子類別都是一個事件。什麼是使用Pusher收聽很多頻道和事件的最佳方式

現在我每個用戶都有類似2000-3000的事件,而且我知道這是錯誤的,那麼讓用戶在3000個事件之間過濾的正確方法是什麼?綁定那麼多事件可以嗎?

+0

我認爲使用事件是很正常的,你可以有很多,但它依賴於客戶端的表現。順便說一句,優化可以以你的事件連線的方式進行。 – SmasherHell

+0

@SmasherHell你有什麼意思? –

+0

您可以通過匿名函數定義事件(例如:element.onclick = function(){};)或者定義一個可以處理多個事件的函數(例如:element.onclick = event_handler;) – SmasherHell

回答

4

重要的是要記住,當您訂閱頻道時,頻道的所有事件都會發送到客戶端(Pusher - 客戶端),即使您沒有綁定該事件。

考慮到上述信息,我建議使用通道來過濾數據。訂閱頻道時的開銷不大。例如,訂閱40個頻道不會代表任何重要的資源使用情況。您需要考慮頻道是否公開(任何人都可以訂閱)或private,每次撥打pusher.subscribe('private-channel-x');將導致您的服務器出現authentication request。有一個multi-auth plugin允許批量發送身份驗證請求。

一個解決方案是讓每個用戶訂閱他們自己的通知通道,並將他們感興趣的事件發送給該單一通道的事件。您可以使用multi publish功能,這可以讓您在許多頻道上發送相同的事件。如果您希望將相同的事件發送給多個用戶,這可能很有用。然而,從信息架構的角度來看,這種解決方案可能不夠優雅。

這裏最好的解決方案實際上取決於您的應用程序。但是通過以上你現在擁有了所有能讓你做出最有效選擇的事實。

+0

「多訂閱功能」不再有效。這方面有什麼消息嗎? – technoTarek

+0

@technoTarek看看https://github.com/pusher/pusher-js#batching-auth-requests-aka-multi-auth – leggetter

相關問題