我在開發Mote.io時遇到了類似的問題,並決定使用託管解決方案而不是構建負載平衡器。處理這個問題非常困難,因爲您需要跨服務器同步數據或將客戶端負載平衡到同一實例,以確保它們獲得所有相同的消息。
Socket.io不會有太大的幫助。您需要實施redis,一些其他數據同步或負載平衡應用程序。
PubNub也會照顧到這一點。後端負責在一個抽象級別同步消息,負載均衡等,所以你只需提供一個通道名稱,PubNub將確保該通道中的所有客戶端都能獲得該消息。
在代碼
Enter Chat and press enter
<div><input id=input placeholder=you-chat-here /></div>
Chat Output
<div id=box></div>
<script src=http://cdn.pubnub.com/pubnub.min.js></script>
<script>(function(){
var box = PUBNUB.$('box'), input = PUBNUB.$('input'), channel = 'chat';
PUBNUB.subscribe({
channel : channel,
callback : function(text) { box.innerHTML = (''+text).replace(/[<>]/g, '') + '<br>' + box.innerHTML }
});
PUBNUB.bind('keyup', input, function(e) {
(e.keyCode || e.charCode) === 13 && PUBNUB.publish({
channel : channel, message : input.value, x : (input.value='')
})
})
})()</script>
的10行即時聊天應用