2012-01-25 57 views
0

我正在社區網站爲朋友們提供一個公會 - 只是爲了增加我的技能和學習新技術。 我的想法是建立一個消息/通知/任何推系統alâfacebook的風格。這意味着如果有人向你發送消息,會出現一個新帖子,或者類似的,你會得到一個像facebook一樣的通知(你在頁面頂部的用戶欄中會看到一個紅色的小數字)。消息推送系統Facebook的風格

現在我不知道該怎麼去谷歌。是一個「推送系統」這個正確的定義? 我怎麼能這樣做? 我也看了不同的問題,並閱讀關於node.js和彗星。 這些技術的概念對我來說很清楚(來自其他語言,如Java)

因此,您有(例如node.js)服務器將消息(如果可用)推送到客戶端。我如何處理客戶端的這種推動?我需要一個像聽衆一樣的東西,是嗎?

感謝您的回答

回答

0

有多種技術可以將服務器「推」到瀏覽器。見Wikipedia

對於一個公會網站來說,這是你第一次嘗試這樣做,最簡單的方法是定期輪詢XMLHttpRequest服務器,並在有新數據時更新頁面內容。

一旦工作,您可以將其更改爲連續的「長輪詢」,只有當有新數據時服務器纔會回答該問題,從而減少網絡流量並使通知更加即時。

1

如果您有一個特定的後端技術,您會發現這個realtime web technology guide是一個很好的起點,例如,搜索'php'或'ruby'以查找託管或自託管的實時技術。

我該如何處理客戶端上的這種推送? 我需要一個像聽衆一樣的東西,是嗎?

所有這些技術經常使用的範例是PubSub。客戶端通過不同的技術以不同的方式實現PubSub。

您用於在客戶端和服務器之間進行通信的技術因解決方案而異,但此舉非常適合WebSocket。但是,您選擇的實時網絡技術使用的庫將直接使用WebSockets進行抽象。

我將演示,你會如何使用Pusher JavaScript庫訂閱數據:

var pusher = new Pusher('YOUR_APP_KEY'); // connect 
var channel = pusher.subscribe('my-channel'); 
channel.bind('my_event', function(eventData) { 
    // handle event data 
}); 

推杆使用channels,它是一個常用的術語,但其他技術是指這些主題或主題。頻道可用於過濾數據或針對特定主題,例如'my_football_team'和事件是進一步過濾數據的一種方式,例如'new_news_item','score_update'。