node.js - 使用 socket.io 和 sails.js 发送 session 特定消息

标签 node.js express websocket socket.io sails.js

我正在尝试使用 sails.js 框架实现私有(private)聊天功能,但在尝试向特定用户发送消息时遇到了一些麻烦。

目前,我已经通过使用socket.io的.socket(socket.id).emit(event,message)将消息发送到特定的socket.id来实现私有(private)通信,但是这种方法的问题是,每次用户打开一个新选项卡时,都会为该新连接生成一个新的 socket.id。

我的问题是: sails.js 是否有助于向特定用户 session 而不是一堆套接字 ID 发出事件(使用 socket.io)?这些技术可以实现吗?

因此,我只能发送该事件一次,并确保当前打开聊天应用程序的所有选项卡都收到该事件。

提前致谢。

最佳答案

Sails 通过一些有用的 pubsub 方法增强了其所有模型。每当您通过套接字请求(例如 socket.get('/user/123') )找到模型时,请求套接字会自动订阅有关该模型的所有消息。然后,您可以调用 User.message(123, data) 向该用户的所有已连接套接字发送消息。

pubsub 方法的文档是 here .

关于node.js - 使用 socket.io 和 sails.js 发送 session 特定消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21167451/

相关文章:

node.js - cookie 和 cookieSession 的区别?

mysql - 通过 native 连接远程mysql : node expressjs

java - 检测SessionUnsubscribeEvent的目标 channel

我可以使用单个 websocket 服务器同时打开 2 个端口吗

javascript - MongoDB .findOne 范围

javascript - Node JS/Mongo 在没有匹配模式的情况下插入

javascript - 如何使用 ES6 类访问 Javascript 中的原型(prototype)属性?

javascript - 渲染子域的 ExpressJS 问题

java - Websocket:页面重新加载后维护用户 session

javascript - Firebase .orderByChild().equalTo().once().then() 当 child 不存在时 promise