javascript - 某个函数无法与 Socket.io 一起使用

标签 javascript node.js socket.io

当有人使用套接字 io 连接到服务器时,我尝试从服务器发送一个包含所有用户 ID 的数组。显然,发射部分似乎工作正常,但接收部分根本没有响应。

io.sockets.on('connection',
// here's the on connection event
function (socket) {
  i++;
  ids[i]=socket.id;
  console.log("We have a new client: " + ids[i]);
  socket.broadcast.emit('setid', ids);
}
/////that is the emitting part

现在这是接收部分:

 socket.on('setid',
   function(ids) {
  console.log(ids);
 }
);

最佳答案

您需要将 socket.broadcast.emit('setid', ids); 更改为 socket.broadcast.emit('setid', {idArr:ids}); code> 和 console.log(ids.idArr); 在接收函数上。

正如有人问的,

服务器

io.on('connection',
// here's the on connection event
function (socket) {
  let i = 0;
  let ids = [];
  i++;
  ids[i]=socket.id;
  console.log("We have a new client: " + ids[i]);
  socket.broadcast.emit('setid', {
    idArr:ids
  });
}

客户端

socket.on('setid', function(ids) {
  console.log(ids.idArr);
 }
);

作为旁注,因为这里并不完全清楚,使用 socket.broadcast.emit 应向所有客户端发出除了发送发出的套接字所以直到你打开另一个它不会发出的客户端实例。

关于javascript - 某个函数无法与 Socket.io 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41079538/

相关文章:

javascript - 在 Google map v3 中切换天气层

javascript - 如何检查数组中的文本变量是否包含另一个数组的每个值中最多的文本?

node.js - Socket IO 游戏权威服务器中的冲突

javascript - 如何在nodejs中获取Mac OS计算机名称

Javascript 临时死区 NodeJS 7.9.0 性能下降?

javascript - socket io .use() 不是一个函数

javascript - 在 Express 中停止执行已取消的请求

javascript - 类切换后调用了错误的函数

javascript - 是否可以像 cookie 一样将本地存储与每个路径的上下文一起使用?

javascript - 使用 FullCalendar、jQuery 和 MVC 查看数据库中的数据