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

How to get details of the user that sent data (.emit()) to nodejs server?

本文关键字:用户 详细信息 emit 服务器 nodejs 何获取 获取 数据      更新时间:2023-09-26

我正在试验一个应用程序,与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');
});
客户端:

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()发送的值。

有什么办法吗?

您可以在connection事件中获取客户端的ip和user-agent。

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/

这对我有用:

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