2014-12-08 9 views

risposta

6

Websocket iniziano la loro vita sotto un handshake di aggiornamento HTTP. Una volta completata l'handshake, si ottiene una connessione web-socket bidirezionale funzionante a lungo.

Se si utilizza Nginx come proxy per websocket, è possibile utilizzare anche "X-Forwarded-For" ma solo sull'handshake. Si veda ad esempio this simple configuration:

# WebSocket Proxy 
# 
# Simple forwarding of unencrypted HTTP and WebSocket to a different host 
# (you can even use a different host instead of localhost:8080) 

server { 
    listen 80; 

    # host name to respond to 
    server_name ws.example.com; 

    location/{ 
     # switch off logging 
     access_log off; 

     # redirect all HTTP traffic to localhost:8080 
     proxy_pass http://localhost:8080; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header Host $host; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

     # WebSocket support (nginx 1.4) 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection "upgrade"; 
    } 
} 

... e alcuni riferimenti su this page.

si configurano quello che Nginx deve inviare insieme alla richiesta di aggiornamento (le informazioni che utilizza per identificare il client) e sarà compito del server back-end di utilizzare le informazioni dalla stretta di mano per identificare il cliente e quindi associare il collegamento websocket al tuo cliente In base a tale associazione, tutti i messaggi che arrivano sulla connessione WebSocket appartengono al client precedentemente identificato.