首页 > 解决方案 > 在nodejs中获取socket.io选项的查询

问题描述

我创建了一个聊天应用程序,其中 android java 作为客户端,node.js 作为服务器端。

客户端:

IO.Options opt=new IO.Options();
opt.query="token=anything";
socket = IO.socket("http://xxx.xx.xxx.xxx:PORT",opt);
socket.connect(); 

我想在连接时发送一个令牌并将其放入服务器进行验证...如何获取我在 node.js 中的 opt.query 中推送的令牌?

如果您有好主意发送一些数据,如连接上的令牌或一些工作以保护连接,请注意。

谢谢

解决方案 服务器端:

io.on('connection',function(socket){
console.log(socket.handshake.query.token);
});

感谢@Marcos

标签: javaandroidnode.js

解决方案


您可以通过以下方式访问 Node.js 中的查询选项socket.handshake.query

const ws = io(http);

ws.use(async(socket, next) => {

    try {
        await validateToken(socket.handshake.query.token));
        return next();
    } catch(e) {
        return next(new Error('Authentication error'));
    }

});

ws.on('connection', socket => {
      /* ... */
});

推荐阅读