我正在尝试使用sails.js框架实现私人聊天功能,并且在尝试向某个特定用户发送消息时遇到了一些麻烦。
目前,我通过使用socket.io的.socket(socket.id).emit(event,message)
将消息发送到特定的socket.id来实现私有通信,但这种方法的问题是每次用户打开新选项卡时,为该新连接生成一个新的socket.id。
我的问题是:sails.js是否有助于将事件(使用socket.io)发送到特定用户会话而不是一堆套接字ID?这些技术有可能吗?
所以我只能发送一次事件,并确保在聊天应用程序当前打开的所有选项卡中都收到该事件。
提前致谢。
答案 0 :(得分:3)
Sails使用一些有用的pubsub方法扩充其所有模型。无论何时通过套接字请求(例如socket.get('/user/123')
)找到模型,请求套接字都会自动订阅有关该模型的所有消息。然后,您可以调用User.message(123, data)
向该用户的所有连接套接字发送消息。
pubsub方法的文档是here。