2013-03-26 53 views
5

我想分析一個請求的url。當我使用websocket.io時,我有一個可以解析的請求對象。我怎麼用socket.io來做到這一點?node.js - socket.io解析請求的url

例如:

http://localhost:4000/foo 

我怎樣才能走出 「富」? 我想:

io.sockets.on('connection', function (socket) { 


    console.log(socket.handshake.address.address); 
      console.log(socket.handshake.url); 
} 

,但它不打印 「富」

回答

1

使用URL API。 http://nodejs.org/docs/latest/api/url.html

u = url.parse(url) 
console.log(u.path) 
+0

但是我是否可以獲取我可以解析的字符串? – poppel 2013-03-26 13:22:17

+0

@poppel哦!對不起,我沒有意識到你沒有這個通知。您始終可以在客戶端使用'window.location'獲取URL,並將這些信息與您的數據一起傳遞。 – Munim 2013-03-26 13:34:12

+0

只要注意,相信頁面發送正確的地址是非常糟糕的。如果您有某種房間系統或身份驗證系統依賴於您處於特定網址,則用戶可能會欺騙它並訪問其他地方。 – JamEngulfer 2016-02-12 11:29:04

3

順便說一句 - 你的方法正確的,如果你是在socketio連接,而不是路徑元素提供參數。它解決了我在使用https://github.com/pkyeck/socket.IO-objc和nodejs socketio向我的套接字連接添加參數時遇到的問題。

例如:

[socketIO connectToHost:@"localhost" onPort:8888 withParams:[NSDictionary dictionaryWithObject:@"52523f26f5b23538f000001c" forKey:@"player"]]; 

構造URL如下:

http://localhost:8888/socket.io/1/?t=16807&player=52523f26f5b23538f000001c 

】這個params是在服務器上的訪問中socket.handshake.query

socketio.listen(server).on('connection', function(socket) { 
console.log('socket info = ', socket.handshake.query.player); 
0

我訪問這樣的網址:

io.on('connection', function(conn){ 
    console.log(conn.handshake.headers.referer); 
});