如何解决节点路由中的WebSocket
我有一个REST API后端。当站点管理员调用路由(即更新用户凭据)时,我正在尝试将WebSocket消息发送回客户端应用程序;
let express = require("express");
let router = express.Router();
//update user credentials
router.put('/admin/user/:id',(req,res)=>{
// 1. Admin updates target user's profile/credentials
// 2. WebSocket message sent to target user client
// 3. Route sends res.status(200) to admin
});
我已经看到一些使用'ws','net','websocket'库的WebSocket示例,但是它们都显示了一个简单的事件处理套接字服务器,该服务器响应任何明示路由之外的套接字消息-更不用说响应一个单独的客户。
此外,事件通知应该仅对目标用户可见,而不对连接到套接字服务器的所有其他用户可见。
解决方法
弄清楚了。 WebSocket服务器与路由无关。
const WebSocket = require("ws");
const wss = new WebSocket.Server({port: 5555});
// handle socket communications
wss.on('connection',(session)=> {
session.send("HELLO SESSION: "+ session.userid);
session.on('message',(message)=> {
console.log(`MSG: "${message}" recived.`);
session.send("Got it.");
});
});
// close
wss.on('close',function close() {
clearInterval(interval);
});
module.exports = wss;
然后,在路由中,仅包含服务,并使用它通过Web套接字连接进行迭代,如下所示:
let wss = require('./mysocketservice')
...
function sendAMessageTo(user,msg) {
wss.clients.forEach(function each(s) {
if(session.user = user)
session.send("still there?.. ");
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。