2014-02-22 84 views
9

node.js WebSocket示例代码片段

我有一个简单的使用express的node.js应用程序。 现在每次客户端连接到节点服务器时,我都会看到字符串“新客户端已连接”,但我想知道新客户端具有哪个IP。javascript:打印websocket客户端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,如果存在,也可以打印其他类似的属性。

我该怎么做?

回答

17

远程IP是升级前的连接的属性:

var wss = new WebSocketServer({port: 9876});  

wss.on('connection', function(ws) { 
    console.log(ws.upgradeReq.connection.remoteAddress); 
}); 

我不记得我是如何找到它,但我知道我花了一段时间;我希望文档与代码一样好...

+0

非常感谢!这工作开箱! – qknight

+0

终身救星<3333 – Sam

+0

它只是给我一个服务器的IP地址,而不是客户端。 –