node.js - "Bind"到用户的套接字

标签 node.js websocket sails.js

我对套接字相当陌生,希望为现有应用程序提供一些实时元素,例如通知。我正在使用 SailsJS(以及带有本地 strat 的 Passport)并且想要一个可以像这样调用的服务

Notification.send(userID, message);

对于所有其他类型的实时事件(私有(private)消息,...),这也是一种非常酷的方式。但我需要知道的是如何将套接字“绑定(bind)”到 UserID。

有什么想法或文章(在 Google 上找不到任何内容 - 可能是因为我不知道到底要搜索什么...)?谢谢。

最佳答案

假设您在 .sailsrc 中启用了 pubsub Hook (只要您没有看到 pubsub: false 就启用),您可以让客户端像这样订阅自己的用户模型,这样他们就会收到发送到其 userId 的任何通知:

User.findOne(userId).then(function (me) {
    User.subscribe(req.socket, me, 'message');
})

然后您可以调用此函数向 Controller 中的特定用户发送通知:

User.message(recieverUserId, {type: "message", data: notification});

只需将类型更改为相关的类型,例如类型:“new Match”并发送适当的数据。 编辑:基本上, .message() 是 sails pubsub 库向订阅的模型发送通知的方式。您还可以将用户数组传递给 User.subscribe

关于node.js - "Bind"到用户的套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31836691/

相关文章:

javascript - SailsJS,SocketIO,没有收到消息

javascript - 如何从 SailsJS 制作 phonegap 移动应用程序

javascript - 更新 mongoose 对象数组

node.js - Ghost安装成功后出现403 Forbidden

使用 Spring Security 和 Keycloak 进行 Spring Websockets 身份验证

node.js - 如何使用 sockjs 创建私有(private)聊天室?

javascript - process.env.NODE_ENV 在配置和策略中有两个不同的值

angularjs - Node 。 npm 安装后找不到 gulp

node.js - Nodejs 从 CouchDB 流式传输视频并显示在视频标签中

web - 可用于 Web 的实时通信协议(protocol)有哪些?