在默认配置下,Sails 允许单台服务器与其所有连接的客户端进行实时通信。当 将您的 Sails 应用程序扩展到多台服务器 时,需要一些额外的设置,以便无论客户端连接到哪台服务器,都可以可靠地将实时消息传递给客户端。此设置通常包括
@sailshq/socket.io-redis
并设置适当的 host
、password
等字段以指向您的托管 Redis 实例。您托管的 Redis 安装不需要任何特殊设置;只需将适当的主机地址和凭据插入您的 /config/sockets.js
文件中,@sailshq/socket.io-redis
适配器将为您处理所有事情。
注意:在多服务器环境中运行时,某些没有回调的套接字方法是易失性的,这意味着它们需要不确定的时间才能完成,即使代码看起来是立即执行的。在考虑代码时,请牢记这一点,例如,代码会在调用
.addRoomMembersToRoom()
后立即调用.broadcast()
。在这种情况下,新房间成员可能无法收到新广播的消息,因为当调用.broadcast()
时,更新后的房间成员资格不太可能已传播到集群中的其他服务器。