En RFC 6455 , que es la especificación del protocolo Websocket, dice:
También se pretende que no se pueda establecer una conexión cuando los datos desde otros protocolos, especialmente HTTP, se envía a un servidor WebSocket, por ejemplo, como podría suceder si se enviara un "formulario" HTML a un Servidor websocket. Esto se logra principalmente requiriendo que el el servidor prueba que leyó el protocolo de enlace, que solo puede hacer si el El apretón de manos contiene las partes apropiadas, que solo pueden ser enviadas por un Cliente webSocket. En particular, en el momento de escribir este especificación, campos que comienzan con | Sec- | no puede ser establecido por un atacante desde un navegador web que utiliza solo API de HTML y JavaScript, como como XMLHttpRequest [XMLHttpRequest].
Sé formularios HTML pero, ¿por qué el servidor y el cliente se comunican con formularios HTML? Y que son | sec- | ¿campos? No soy un profesional de las tecnologías web, pero sé que los formularios HTML se pueden manipular fácilmente con las API de HTML y Javascript.
Lo siento si es demasiado básico para preguntar, dígamelo y leeré los tutoriales relevantes.