Pregunta

Probé muchos ejemplos de sockets y la comunicación entre ellos fue bastante simple:El socket se abre y permanece abierto hasta que lo cierras y no se envía ninguna información excepto la que has enviado.

Con los sockets web HTML5 estos dos momentos son diferentes.

Al principio, tan pronto como el socket HTML5 del cliente se conecta al socket del servidor, envía una gran cantidad de información:

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

¿Cómo interpretar esta información?¿Qué hacer con ello?

En segundo lugar, cuando envío una cadena desde el servidor de depuración (utilidad de configuración de Hercules), el socket onmessage El evento no se activa y el socket del cliente cierra la conexión inmediatamente después de esto.

Entonces, supongo que el socket web HTML5 espera algún protocolo de enlace antes de poder usarse.¿Dónde leer sobre esto?

POR CIERTO:Estoy usando Ruby como lenguaje del lado del servidor.

¿Fue útil?

Solución

He probado muchos ejemplos de zócalo web ...

de lo que describe usted no usó "sockets web", sino simplemente "sockets", por ejemplo.TCP directo / IP.WebSockets (por ejemplo, lo que llame "HTML Web Sockets") son diferentes: se utilizan para crear algo de socket como sobre una conexión HTTP establecida.Por lo tanto, ves la consulta HTTP con el encabezado "Actualizar: SELF DESCHOQUE", con la tecla "Sec-WebSocket-Clave", etc.

Después de establecer la conexión (el servidor envía la respuesta con el código 101), la conexión de Sitio web tiene su propio encuadre y lucha de los datos, por lo que no puede simplemente usarlo con las herramientas de socket normal.

consulte http://tools.ietf.org/html/rfc6455 para la especificación yUse "Websockets" como la palabra clave si busca más documentación, uso ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top