[英]A function does not work with Socket.io
我正在尝试从服务器发送一个数组,当服务器使用socket 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);
to socket.broadcast.emit('setid', {idArr:ids});
和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
将向除了发送发送的套接字之外的所有客户端发出 ,直到你打开另一个不会发出的客户端实例。
看下面的例子,它非常简单,只是socket.io
服务器和socket.io-client
客户端(你可能必须首先运行npm install socket.io-client
):
哈利勒-server.js
const io = require('socket.io')(3001);
var ids = [];
io.on('connection', function (socket) {
'use strict';
ids.push(socket.id);
console.log("We have a new client: " + socket.id);
socket.broadcast.emit('setid', ids);
});
console.log('Server started at port 3001');
哈利勒-client.js
const socket = require('socket.io-client')('http://localhost:3001');
socket.on('setid', function (ids) {
console.log(ids);
});
使用node khalil-server
启动服务器,并使用node khalil-client
启动尽可能多的客户node khalil-client
(您必须运行至少两个客户端实例,因为我们使用socket.broadcast.emit
)。 它只是有效。 请向我们展示更多代码,我们将尝试查找错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.