WebSocket y PHP Socket

WebSocket es una característica de HTML5 para establecer conexiones de socket entre un navegador web y un servidor, una vez que se ha establecido la conexión con el servidor, todos los datos de WebSocket se envían directamente a través de un socket en lugar de las respuestas HTTP habituales, Lo que nos da una comunicación mucho más rápida y persistente entre un navegador web y un servidor. Vamos a crear un sistema de chat simple con esta tecnología cool (HTML5 WebSocket y PHP).

WebSocket del lado del cliente: Para abrir la conexión de socket, llamamos a new WebSocket (ws: // SERVER URL) ya que WebSocket usa un protocolo diferente para las conexiones, usamos ws: // en lugar de http: //, seguido por host, número de puerto y Daemon script en su servidor:

Justo después de abrir la conexión, necesitamos adjuntar algunos manejadores de eventos que nos permitan conocer el estado de conectividad, errores y mensajes entrantes, para sus referencias:

WebSocket (wsUri): crea un nuevo objeto WebSocket.
.onopen — El evento ocurre cuando se establece la conexión.
.onclose — El evento ocurre cuando se cierra la conexión.
.onmessage — El evento ocurre cuando el cliente recibe datos del servidor.
.onerror — El evento ocurre cuando hay un error.
.send (mensaje) — Transmite los datos al servidor mediante la conexión abierta.
.close () — Finaliza la conexión existente .

Pasos para usar PHP Socket
Crear socket
Vincular a una dirección.
Escucha las conexiones entrantes.
Acepte las conexiones.
Handshake o apretón de manos con WebSockets
Descodificar / Codificar marcos de datos.

Apretón de manos:
El cliente tiene que presentarse mediante el envío de una solicitud de handshake WebSocket para establecer una conexión exitosa con el servidor, una solicitud de apretón de manos contiene un Sec-WebSocket-Key un base64 codificado aleatoriamente generado el valor de 16 bytes. Y el servidor lee la clave, adjunta la cadena mágica “258EAFA5-E914–47DA-95CA-C5AB0DC85B11”, la tecla hash con SHA1, devuelve la clave en Sec-WebSocket-Accept codificada con base64.