Domanda

Ho testato molti esempi di socket e la comunicazione tra loro è stata piuttosto semplice:socket viene aperto e rimane aperto finché non lo chiudi e non viene inviata alcuna informazione tranne quella che hai inviato.

Con i web socket HTML5 questi due momenti sono diversi.

Inizialmente, non appena il socket HTML5 del client si connette al socket del server, invia una serie di informazioni:

GET /echo HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: localhost:2002
Origin: null
Pragma: no-cache
Cache-Control: no-cache
Sec-WebSocket-Key: iYzsmhdzg6h6/UGtCLLGVA==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits, x-webkit-deflate-frame
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36
Cookie: _rails-socket-listener_session=dGtleFYxNjhIaUZrZVpOWUNIMHdFZFd6WW9wY2FJYjIwOWdSMFVPR1ZkYkZUakExdVlhNzMvWEphNG1IRUIvT1JsQ0N6bHF4REFXTkJUemE4R2RjOER6bXdhSEt6M0tIYmRwV0w3VzkrVGt4MzN2Z0M3MXMyYndZR3hvOGMySTJTZmdEMW9JdEE5ZERuSDB4VCtROFNnPT0tLTlheG1KamlBSVVmT0tUZ1F5bmQ0OUE9PQ%3D%3D--23413749a30295f08d277292837c76187a02a332

Come interpretare queste informazioni?Cosa farne?

In secondo luogo, quando invio una stringa dal server di debug (utilità di configurazione Hercules), socket's onmessage l'evento non viene attivato e il socket client chiude la connessione immediatamente dopo.

Quindi, suppongo che il socket web HTML5 si aspetti un po' di handshaking prima di poter essere utilizzato.Dove leggere a riguardo?

A proposito:Sto usando Ruby come linguaggio lato server.

È stato utile?

Soluzione

Ho testato molti esempi di socket web ....

Da quello che descrivi non hai utilizzato "web socket" ma semplicemente "socket", ad es.TCP/IP diretto.WebSocket (ad es.quelli che chiami "web socket HTML") sono diversi:vengono utilizzati per creare qualcosa di simile a un socket su una connessione HTTP stabilita.Pertanto vedi la query HTTP con "Aggiornamento:websocket", con l'intestazione "Sec-WebSocket-Key" ecc.

Dopo aver stabilito la connessione (il server invia la risposta con il codice 101) la connessione WebSocket ha il proprio framing e codifica dei dati, quindi non è possibile utilizzarla semplicemente con i normali strumenti socket.

Vedere http://tools.ietf.org/html/rfc6455 per le specifiche e utilizza "WebSockets" come parola chiave se cerchi ulteriore documentazione, utilizzo...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top