2013-03-26 20 views
5

Voglio analizzare un URL richiesto. Quando ho usato websocket.io avevo un oggetto di richiesta che potevo analizzare. Come posso farlo con socket.io?node.js - socket.io parse url richiesto

esempio:

http://localhost:4000/foo 

come posso uscire "pippo"? ho provato:

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


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

ma non viene stampata "pippo"

risposta

1

utilizzare l'API URL. http://nodejs.org/docs/latest/api/url.html

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

ma ottengo la stringa che posso analizzare? – poppel

+0

@poppel oh! scusa, non avevo capito che non avevi quell'informazione. Puoi sempre ottenere l'URL usando 'window.location' sul lato client e passare tali informazioni insieme ai tuoi dati. – Munim

+0

Basta notare che confidare nella pagina per inviare l'indirizzo corretto è molto brutto. Se disponevi di una sorta di sistema di sala o di un sistema di autenticazione che si basava sul fatto di essere in un URL specifico, un utente poteva solo falsificarlo e accedere ad altri luoghi. – JamEngulfer

3

BTW - Il tuo approccio è corretto se si forniscono i parametri per la connessione socketio invece di elementi di percorso. Ha risolto il mio problema usando https://github.com/pkyeck/socket.IO-objc con nodejs socketio per aggiungere parametri alla mia connessione socket.

Ad esempio:

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

costrutti URL come segue:

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

I parametri sono accessibili sul server in socket.handshake.query

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

sto accedendo l'url del genere:

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