如何在Socket.io中获取IP地址

4
var app = require("express")();
var server = require("http").Server(app);
var io = require("socket.io")(server);
var requestIp = require('request-ip');
server.listen(3000);

var ipMiddleware = function(req, res) {
    return requestIp.getClientIp(req);
};

var ip = null;
app.get("/", function (req, res) {
   ip = ipMiddleware(req, res);
   res.sendFile(__dirname + "/index.html");
});

io.on("connection", function (socket) {
   // send the ip to user
});

我的问题是,我想通过express获取客户端的IP地址,并将IP地址发送给客户端。但获取到的IP地址与实际不符,我应该如何使用express发送正确的IP地址?谢谢。

2
尝试使用socket.request.connection.remoteAddress - laggingreflex
@laggingreflex,我有可能得到远程地址为空的情况吗?谢谢你的回答。 - Mike
1
尝试其中之一:(注意,reqsocket.request链接 - laggingreflex
1个回答

9
您可以像这样使用。在此处,我使用了 socket.io 方法来获取客户端的 IP 地址。
io.on("connection", function (socket) {
    var clientIp = socket.request.connection.remoteAddress;
    socket.emit('eventName',{ip : clientIp}); //emit it back to client
});

查看此stackoverflow线程,了解如何获取不同socket.io版本的客户端IP。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接