2015-10-06 56 views
4

我想縮放運行在restify上的socket.io。我能夠將它設置爲在一個nodejs實例上運行良好。現在,當我將應用擴展到四個實例時,應用生態系統崩潰了(即客戶端之間的事件未正確同步)。如何在restify上縮放socket.io?

我正在尋找關於如何使用restify設置粘性會話的示例。或者,現在的情況如何?

粘性會話的更新是一年前的:Socket 1.0 Update/Scalability

我發現這兩個博客設置此功能,但它們都使用Express和也寫了一年多前:

由於我製作無頭API,我認爲Express不應該被使用。這是推薦的思維方式還是我應該使用Express?

package.json:

"dependencies": { 
    "hiredis": "^0.4.1", 
    "pouchdb": "^4.0.3", 
    "pouchdb-upsert": "^1.1.3", 
    "redis": "^2.0.1", 
    "restify": "^4.0.0", 
    "socket.io": "^1.3.7" 
    } 

任何幫助,將不勝感激!

回答

1

由於Node是單線程的並且位於單個CPU內核上,所以Socket.io只會將您的服務器< - >客戶端數據同步到單個實例中。要同步多個實例,您需要更高級別的消息管理方法。 Socket.io推薦使用Redis的一個實例。還有這個回購:http://socketcluster.io它爲您處理相同的問題。