【问题标题】:set username in socket io connection在套接字 io 连接中设置用户名
【发布时间】:2017-04-07 14:26:07
【问题描述】:

我有一个聊天应用程序,我必须在其中处理在线用户。 我如何发送用户名:

    var myIoSocket = io.connect();

所以我可以在后端列一个列表。

目前我正在这样做。

Socket.on("connect",function(){
            Notification.primary('Connected');
            Socket.emit('iamonline',{
                username: $rootScope.username
            });
        });

后端:

var onlineUsers = {};
io.sockets.on('connection', function(socket){
    socket.on('iamonline',function (data) {
        console.log(data.username," connected.")
        onlineUsers[data.username] = socket;
        Users[data.username] = socket;
        currentUser = data.username;
        console.log(socket)
        io.sockets.emit("liveusers",Object.keys(onlineUsers));
    });
    socket.on('disconnect', function(){
        delete onlineUsers[currentUser];
        console.log(currentUser," disconnected.");
        io.sockets.emit("liveusers",Object.keys(onlineUsers));
    });
});

【问题讨论】:

    标签: javascript ios node.js sockets


    【解决方案1】:

    我在另一个项目中遇到了同样的问题,并找到了通过查询和握手获得价值的最佳方法。

    server.js

    io.on('connection' , function(socket){
      if(typeof socket.handshake.name!="undefined"){
        user = {
          name : socket.handshake.query.name,
          id : socket.handshake.query.id,
          email : socket.handshake.query.email,
        }
      }
    });
    

    在客户端,

    if(typeof io != "undefined"){
      var visitor = io.connect('ws://127.0.0.1:8000' , {
            'query': $.param({token: '<?=Session::$instance->session['id']?>'}) + '&name=<?=Session::get("username")?>&id=<?=Session::get("ID")?>&email=<?=Sesion::get("Email")?>'
      });
    }
    

    【讨论】:

    • 你拯救了我的一天,非常感谢。
    猜你喜欢
    • 2020-09-02
    • 2012-02-06
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多