在預設配置下,Sails 允許單一伺服器與其所有連線用戶端之間的即時通訊。當擴展您的 Sails 應用程式到多個伺服器時,需要一些額外的設定,以確保即時訊息能夠可靠地傳遞到用戶端,無論他們連線到哪個伺服器。此設定通常涉及
@sailshq/socket.io-redis
,並設定適當的 host
、password
等欄位,以指向您的託管 Redis 實例。您的託管 Redis 安裝不需要特殊的設定;只需將適當的主機位址和憑證插入您的 /config/sockets.js
檔案中,@sailshq/socket.io-redis
适配器將會處理一切。
注意:在多伺服器環境中運作時,某些沒有回呼的 socket 方法是不穩定的,這意味著它們需要不確定的時間才能完成,即使程式碼看起來會立即執行。在考慮例如在呼叫
.addRoomMembersToRoom()
之後立即呼叫.broadcast()
的程式碼時,最好記住這一點。在這種情況下,新的房間成員可能不會收到新廣播的訊息,因為當呼叫.broadcast()
時,更新後的房間成員資格不太可能已經傳播到叢集中的其他伺服器。