2013-03-26 16 views
5

Ich möchte eine angeforderte URL analysieren. Als ich websocket.io benutzte, hatte ich ein Anfrageobjekt, das ich analysieren konnte. Wie kann ich es mit socket.io machen?node.js - socket.io parse angefordert url

Beispiel:

http://localhost:4000/foo 

wie kann ich "foo" raus? Ich habe versucht:

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


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

aber es wird nicht gedruckt "foo"

Antwort

1

Verwenden Sie die URL api. http://nodejs.org/docs/latest/api/url.html

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

aber au bekomme ich die Zeichenfolge, die ich analysieren kann? – poppel

+0

@poppel oh! Entschuldigung, ich wusste nicht, dass du diese Information nicht hast. Sie können die URL immer mit 'window.location' auf der Clientseite abrufen und diese Informationen zusammen mit Ihren Daten weitergeben. – Munim

+0

Nur zu beachten, dass das Vertrauen der Seite, um die richtige Adresse zu senden, sehr schlecht ist. Wenn Sie über ein Raumsystem oder ein Authentifizierungssystem verfügen, das darauf angewiesen ist, dass Sie sich an einer bestimmten URL befinden, könnte ein Nutzer es einfach fälschen und Zugang zu anderen Orten erhalten. – JamEngulfer

3

BTW - Ihr Ansatz ist richtig, wenn Sie Parameter an die socketio Verbindung anstelle von Pfadelemente liefern. Es löste mein Problem, wenn ich https://github.com/pkyeck/socket.IO-objc mit nodejs socketio verwende, um Params meiner Socket-Verbindung hinzuzufügen.

Zum Beispiel:

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

Konstrukte URL wie folgt:

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

Die params sind zugänglich auf dem Server in socket.handshake.query

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

Ich bin Zugriff die URL wie folgt:

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