我有一个简单的node.js应用程序使用express。 现在每次客户端连接到节点服务器时,我都会看到字符串'new client connected',但我想知道新客户端有哪些IP。
var WebSocketServer = require('ws').Server;
var connIds = [];
var server = require('http').createServer(app).listen(80);
// set up the websocket server
var wss = new WebSocketServer( { server: server } );
wss.clientConnections = {};
// websocket server eventlisteners and callbacks
wss.on('connection', function (connection) {
console.log('wss.on.connection - new client connected');
...
请参阅以下代码: https://github.com/qknight/relais.js/blob/master/relais.js/server.js#L159
对象connection
具有属性,但我不了解如何查询它们或它们是什么。 我想要的只是打印客户端IP,如果存在,也可以打印其他类似的属性。
我该怎么做?
答案 0 :(得分:18)
远程IP是升级前连接的属性:
var wss = new WebSocketServer({port: 9876});
wss.on('connection', function(ws) {
console.log(ws.upgradeReq.connection.remoteAddress);
});
我不记得我是怎么找到的,但我知道这花了我一段时间;我希望文档和代码一样好......
更新: WS已经移动了一些东西,所以这里是一个更新的示例,说明如何在当前代码中获取原始HTTP信息。注意连接事件处理程序的第二个参数:
wss.on('connection', function conn(ws, req) {
var ip = req.connection.remoteAddress;
console.info(ip);
});