Javascript JS Socket |在站点上添加完整阵列
所以我的插座系统有点问题。我有一个数组,如果与站点建立新连接,它将被释放,但问题是它将在所有用户上被调用。因此,如果我有Javascript JS Socket |在站点上添加完整阵列,javascript,node.js,sockets,Javascript,Node.js,Sockets,所以我的插座系统有点问题。我有一个数组,如果与站点建立新连接,它将被释放,但问题是它将在所有用户上被调用。因此,如果我有console.log('new user'),那么每个人都会将它发送到控制台。我的问题是,我如何才能做到只有一个刚刚连接的用户才能接收到它 这是我的服务器 io.on('connection', function(client){ clients.push(client.id); io.emit('add games', coinflips); //T
console.log('new user')
,那么每个人都会将它发送到控制台。我的问题是,我如何才能做到只有一个刚刚连接的用户才能接收到它
这是我的服务器
io.on('connection', function(client){
clients.push(client.id);
io.emit('add games', coinflips); //This is the line
console.log(clients);
client.on('disconnect', function(){
clients.splice(client.indexOf, 1);
console.log(clients);
});
});
这是如何处理的
socket.on('add games', function(data){
if(data.length > 0){
addGames(data);
}
});
您可以使用套接字id,
socket.id
然后发送到该id。
沿着这条线
io.of('/mynamespace').sockets[socketID].emit(...)
这个逻辑可能会起作用
clients = [];
然后,每当建立连接时
clients.push(socket);
然后在clients数组中,只需索引它
clients[0].emit(...)
这是连接时获取id的方式
console.info('Client id (id=' + socket.id + ').');
IO允许您“命名”套接字,这本质上意味着分配不同的端点或路径
名称空间是一种非常有用的特性,它可以最大限度地减少资源(TCP连接)的数量,同时通过在通信通道之间引入分离来分离应用程序中的关注点。多个名称空间实际上共享相同的WebSockets连接,从而节省了服务器上的套接字端口
---------------------------------------------------------------
名称空间是在服务器端创建的。但是客户端通过向服务器发送请求来加入它们
---------------------------------------------------------------
默认名称空间
根命名空间“/”是默认命名空间,如果客户端在连接到服务器时未指定命名空间,则客户端将加入该命名空间。使用套接字对象客户端与服务器的所有连接都是到默认名称空间的
--------------------------------------------------------
自定义名称空间
我们可以创建自己的自定义名称空间。要设置自定义命名空间,我们可以在服务器端调用of函数:
---------------------------------------------------------
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendfile('index.html');
});
var nsp = io.of('/my-namespace');
nsp.on('connection', function(socket){
console.log('someone connected');
nsp.emit('hi', 'Hello everyone!');
});
http.listen(3000, function(){
console.log('listening on localhost:3000');
});
感谢您的快速回答,但是/mynamespace指向什么?如果您阅读了文档,您可以创建自定义名称空间来侦听并相应地发出事件。如果您愿意,您可以使用默认名称空间。有关名称空间问题的更直接解释,请查看更新答案。