0

我想在许多用户组之间建立实时连接,而且我是服务器端脚本的新手............我想向某些用户发送某些消息(数据),现在我的问题是如何是否要为所有用户使用相同的套接字,或者为不同的用户或不同的任务使用不同的套接字连接..?

目前我只是使用单个套接字并以这种方式为用户提供服务。这不是实际的应用程序,它只是我将要做的事情的原型:

var io = require('socket.io').listen(server);
server.listen(http_port);

var allUsers=[];
var num=1;
io.sockets.on('connection', function (socket) {    
var user = 'user#'+num++;
allUsers[user] = socket;
socket.on('message',function(data){
    if(data.to)
        allUsers[data.to].emit("message",{msg:data.msg,by:data.by});
    });
});

客户端:


    socket.emit('message',{to:'user#1',from:'talha',msg:'hello'});
    
也许,我采用了错误的方法,因为稍后我将查询数据库将这些结果发送给特定的客户,我该如何管理。请提供一些代码详细信息以及您的答案.. 提前致谢。

4

1 回答 1

1

不,你只有一个监听套接字。在每个连接上(从 中可以看出io.sockets.on('connection', function(socket){..),您的function(socket){....}被调用并且该函数中的套接字与每个连接/用户相同。事件的函数回调"connection"是单独的,每个用户都有一个。

编辑: 对于用户分离用户,您可以执行以下操作:

var users = [];
io.sockets.on("connection", function(socket){
   socket.on("message", function(data){
        // Handle if it is a valid user, make some authentication and have a username..
        users[username] = socket;
        // on another message, if you want to send message  
        users["myuser"].send(...)
   }

});
于 2013-01-15T21:51:48.763 回答