javascript - socket.io 的额外参数

标签 javascript node.js websocket socket.io

如何使用 socket.io 中的连接发送额外参数?因此,当客户端连接时,他们会发送额外的信息,而服务器端将其接收为

io.on('connection', function(client, param1, param2, param3) {
    // app code
}

最佳答案

这里有一个应该有用的小技巧。首先,您创建自己的 Socket 客户端,它会在第一次连接时发送一条消息(包含您所有的附加信息)。

// Client side

io.MySocket = function(your_info, host, options){
  io.Socket.apply(this, [host, options]);
  this.on('connect', function(){
    this.send({__special:your_info});
  });
};
io.util.inherit(io.MySocket, io.Socket);

var my_info = {a:"ping"}
var socket  = io.MySocket(my_info);

然后在服务器端,您修改套接字以监听特殊消息并在监听时触发事件。

// Server side

var io = require('socket.io').listen(app);
io.on('connection', function(client){
  client.on('message', function(message){
    if (message.__special) {
      io.emit('myconnection', client, message.__special);
    }
  });
});

io.on('myconnection', function(client, my_info) {
  // Do your thing here
  client.on('message', ...); // etc etc
}

这是我用来将我的 session 处理链接到我编写的包的 Socket.IO 中的技术。

关于javascript - socket.io 的额外参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6284795/

相关文章:

javascript - 在 dotcloud 上托管 nodejs 服务器

javascript - 如何使用 webdriverio 和 mocha 提取元素值?

javascript - 如何使用 Socket.io 在 Node.js 中添加房间?

javascript - 机车滚动如何让元素固定在滚动条上

node.js - 更改 SSL 证书的域 - 如 Charles Proxy

用于匹配正整数和负整数的 Javascript RegEx

Javascript 字符串到正则表达式而不转义

ios - 如何在 ios 聊天应用程序中使用 Web 套接字?

javascript - 是什么让网格线可见?

javascript - 如何在 typed.js 中使用 `onComplete()` 方法?