2012-05-15 72 views
4

我有一個問題,在Heroku上縮放我的Node.js應用程序。我正在使用RedisStore來保持我的套接字連接在節點進程之間持久。我正在縮放到2,3個進程。我在這裏跟着這個代碼https://gist.github.com/1391583。在一個進程中一切正常,但是當我擴展時,廣播不會到達其他節點。但是,連接信息是持久的,我不會收到持續的握手錯誤並斷開連接。Socket.IO RedisStore和xhr-polling

我的理解是,socket.io RedisStore還在內部處理redis Pub/Sub以保持多個進程同步。正如這裏所提到的https://groups.google.com/forum/?fromgroups&hl=en#!topic/socket_io/gymBTlruYxs順便說一句,我申請了#848 socket.io補丁,似乎沒有爲我解決問題。

截至2012年5月14日,Heroku僅支持socket.io的xhr-polling傳輸,這正是我所使用的。那麼只有長時間輪詢纔會出現這個問題?有沒有解決這個問題的方法?

在此先感謝。

回答

0

我通過實現我自己的Redis圖層來解決此問題。我擁有在不同實例上部署的所有Node服務器訂閱中央Redis服務器,並偵聽來自Redis而不是套接字的消息。它適用於websockets和xhr輪詢。

+0

嗨@agwntr,那是個好消息!你介意與我們分享一些代碼嗎?在這工作了好幾個小時! – AmpT

1

對不起,如果這是完全不相關的,但是當我看到一個需要可擴展性,節點,redis和pub/sub的問題時,我想到Beseda--這是你應該關注的東西嗎?