【问题标题】:What is the actual way to use socket io to serve many users simultaneously .?使用socket io同时为多个用户服务的实际方法是什么?
【发布时间】:2013-01-16 06:02:17
【问题描述】:

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

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

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'});
    
也许,我采用了错误的方法,因为稍后我将查询数据库将这些结果发送给特定的客户,我该如何管理。 请提供一些代码详细信息以及您的答案.. 提前致谢。

【问题讨论】:

    标签: node.js webserver express websocket socket.io


    【解决方案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(...)
       }
    
    });
    

    【讨论】:

    • 好的,我知道了,然后选择一些特定的用户来发送消息。
    猜你喜欢
    • 1970-01-01
    • 2015-03-10
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    相关资源
    最近更新 更多