【问题标题】:How to get details of the user that sent data (.emit()) to nodejs server?如何获取向nodejs服务器发送数据(.emit())的用户的详细信息?
【发布时间】:2014-08-15 07:47:19
【问题描述】:

我正在尝试使用nodejsexpresssocket.io 运行的应用程序

服务器端:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

io.on('connection', function(socket){

    socket.on('send_stuff', function(stuff){

        io.emit('log_stuff',newStuff);

    });

});

http.listen(54123, function(){
    console.log('listening on *:54123');
});

客户端:

var socket = io.connect('http://example.com:12345');
socket.emit('send_stuff',stuff);

我的问题是如何获取执行socket.emit('send_stuff',stuff) 的客户端(ip、user-agent 等)的详细信息?

我想将它传递给newStuff 变量。

socket.on('send_stuff', function(stuff){}); 这一行中的stuff 只返回客户端emit() 发送的值。

任何想法如何做到这一点?

【问题讨论】:

    标签: javascript node.js sockets express socket.io


    【解决方案1】:

    您可以在connection事件中获取客户端的ip和用户代理。

    io.on('connection', function(socket){
      console.log("ip: "+socket.request.connection.remoteAddress);
      console.log("user-agent: "+socket.request.headers['user-agent']);
    })
    

    文档可以给你一些提示http://socket.io/docs/server-api/

    【讨论】:

      【解决方案2】:

      这对我有用:

      io.on('connection', function(socket) {
          var userAgent = socket.handshake.headers["user-agent"];
          console.log("User-Agent: " + userAgent);
      });
      

      【讨论】:

        猜你喜欢
        • 2018-02-01
        • 2020-08-03
        • 1970-01-01
        • 2018-04-03
        • 1970-01-01
        • 1970-01-01
        • 2017-07-16
        • 2014-03-30
        • 1970-01-01
        相关资源
        最近更新 更多