2013-03-26 12 views
5

Chcę przeanalizować żądany adres URL. Kiedy użyłem websocket.io, miałem obiekt żądania, który mogłem parsować. Jak mogę to zrobić za pomocą socket.io?plik node.js - plik sparowany przez socket.io

przykład:

http://localhost:4000/foo 

jak mogę dostać się "foo"? Próbowałem:

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


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

ale nie drukuje "foo"

Odpowiedz

1

użyć API URL. http://nodejs.org/docs/latest/api/url.html

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

ale czy dostanę ciąg, który mogę sparsować? – poppel

+0

@poppel oh! przepraszam, nie zdawałem sobie sprawy, że nie masz tej informacji. Zawsze możesz uzyskać adres URL za pomocą 'window.location' po stronie klienta i przekazać te informacje wraz z danymi. – Munim

+0

Pamiętaj, że zaufanie do strony, która wysłała poprawny adres jest bardzo złe. Jeśli miałeś jakiś system pokojowy lub system uwierzytelniania, który polegał na tym, że jesteś pod określonym adresem URL, użytkownik mógł je podrobić i uzyskać dostęp do innych miejsc. – JamEngulfer

3

BTW - Twoje podejście jest poprawne jeśli dostarczanie parametry połączenia socketio zamiast elementów ścieżki. Rozwiązał on mój problem przy użyciu https://github.com/pkyeck/socket.IO-objc z nodejs socketio, aby dodać parametry do mojego połączenia z gniazdem.

Na przykład:

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

konstruktami URL następująco:

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

params są dostępne na serwerze w socket.handshake.query

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

mam korzystającego adres URL podobny do tego:

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