如何获取将数据(.emit())发送到nodejs服务器的用户的详细信息?

Jo *_* E. 2 javascript sockets node.js express socket.io

我正在尝试运行的应用程序nodejs,expresssocket.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');
});
Run Code Online (Sandbox Code Playgroud)

客户端:

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

我的问题是如何获取执行的客户端(ip,用户代理等)的详细信息socket.emit('send_stuff',stuff)

我想将它传递给newStuff变量.

socket.on('send_stuff', function(stuff){});在此行中stuff仅返回客户端发送的值emit().

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

vin*_*ayr 11

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

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

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