javascript - 将数据从 socket.io 中间件传递到事件的正确方法

标签 javascript node.js socket.io dom-events

我想从 socket.io middleware 传递一些数据到发出的event .我正在从请求中提供的 header token 中提取一些详细信息,并将提取的数据附加到 socket像这样的对象:

/* extracting details from token, before connecting */
io.use((socket, next) => {
    const details = fetchDetails(socket.request.headers.token);
    // appending details to socket object
    socket.details = details;
    next();
});

/* on connection event */
io.on("connection", (socket) => {
    console.log('Client conected');
    // accessing details fetched in the middleware
    console.log(socket.details);
});
一切正常,我唯一关心的是这种方法是否万无一失?是否保证 middleware 中附加的数据将始终在 event 中访问,或者是否存在我的附加数据将在事件中被覆盖/丢失的情况?
middleware 传递数据是否正确?到发出的event ?

最佳答案

像这样的东西应该可以编辑:即使使用 typescript 也可以正常工作


    /* extracting details from token, before connecting */
    io.use((socket, next) => {
        const details = fetchDetails(socket.request.headers.token);
        // use socket.data to pass additional attachments
        socket.data = details;
        next();
    });


    /* on connection event */
    io.on("connection", (socket) => {
        console.log('Client conected');
        // accessing details fetched in the middleware from socket.data object
        console.log(socket.data);
        
        //If you want to pass another object in emit() from frontend
        socket.on("some_action", (anotherData) => {
          //Here's your data from event
          console.log(anotherData);
          
          //And here's your data from middleware
          console.log(socket.data);
        })
    });

关于javascript - 将数据从 socket.io 中间件传递到事件的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66053815/

相关文章:

android - Cordova 构建命令在命令提示符下失败。在根项目 'cdvBuildDebug' 中找不到任务 'android'

javascript - 在websockets javascript和golang服务器上工作,尝试发送文件和图像

database - Redis - 发布/订阅内部

使用 Socket.io、ExpressJS 和 Nginx Ingress 的 Kubernetes Websockets

javascript - Extjs 4.1 - 如何创建没有窗口或容器的选项卡面板?

Javascript (0 && 1)

javascript - 同一域中最顶层的 iframe 是什么?

javascript - 创建模型时 Sequelize 连接错误

javascript - jQuery 链接不起作用

node.js - 功能有效,但在使用 util.promisify() 时失败?