2013-03-19 27 views
1

當我從一個連接的套接字接收到某個事件時,我必須發送一個請求作爲參數我的主機名和端口。我希望能夠從套接字對象中檢索這些信息。不幸的是,關於這方面的文檔很少,我似乎無法弄清楚是否可行。如何獲取套接字的主機名?

那麼,是不是可以做這樣的事情在Socket.io:

io.sockets.on('connection', function(socket){ 
    console.log(socket.manager.server.hostname) 
})' 

(或者:這錯誤的思維我在這裏做在想,這應該在第一種情況下是可能的? )

+0

我從來沒有使用socket.io自己,但嘗試檢查上下文是什麼(console.log(util.inspect(this)),也許你正在尋找的信息在這個對象上 – ExxKA 2013-03-19 15:15:19

+0

'socket.io'沒有辦法知道其他人如何解析主機它已經開啓了,很多時候它正在監聽的主機是127.0.0.1或0.0.0.0,這是衆所周知的,如果你知道服務器的主機名可以正確解析,你可以使用['os.hostname ()'](http://nodejs.org/api/os.html#os_os_hostname),或者只需將主機放置在配置文件中 – Chad 2013-03-19 15:16:39

+0

@Chad嗯,但有了正常的請求,我至少可以解析URL的請求並從中推導出主機名這一點。 Websockets當然也應該可以做到這一點。 – Vincent 2013-03-19 15:20:17

回答

3

嘗試: console.log(socket.handshake.headers.host);

(分割端口如有必要:執行console.log(socket.handshake.headers.host.split( 「:」),轉移());)

+1

太棒了!小心分享你如何找到/知道這個? – Vincent 2013-04-22 13:23:35

+1

通過檢查socket.io源代碼找到它 – dknaus 2014-10-03 13:13:54