11
votes

Comment fonctionne l'interface HTML5 WEB Sockets?

J'ai entendu parler de l'interface des sockets Web dans la spécification de fichier HTML à partir d'une question pertinente Ici .
Cela semble très prometteur!
Je ne comprends pas comment cela fonctionne, cela utilise-t-il toujours le protocole HTTP et travaille autour de celui-ci ou fonctionne-t-il quelque chose comme des sockets TCP?


0 commentaires

4 Réponses :


2
votes

Le protocole de socket Web est un protocole basé sur TCP, mais il est conçu pour rétrograder à HTTP. Il existe également une poignée de main HTTP qui demande au serveur de passer au protocole des sockets Web. Donc, si le serveur le supporte, une connexion TCP en duplexé sera utilisée, sinon recours à http et les pirates de la comète pour cela.


2 commentaires

La dernière fois que j'ai vu la spécification de protocole WebSocket, il n'y avait aucun moyen de déclasser automatiquement vers HTTP. Où était-ce que c'est ajouté?


Services WebSockets (habitué à?) NTP, un protocole arrêté dans les années 80.



7
votes

Ce n'est pas http, ni des prises de TCP simples. Il est conçu pour obtenir la faible tenue des connexions de socket régulières (Ajax / Comet est très élevée), mais sans sacrifier certains des principes de sécurité du navigateur qui ont été développés au cours des dernières années.

La poignée de main WebSockets initiale ressemble beaucoup à HTTP. Cela facilitera la tâche des proxy http existants et du serveur Web de prendre en charge les connexions WebSockets entrants et fera la bonne chose avec eux (c'est-à-dire la transmettre au réel gestionnaire). Mais après une poignée de main réussie (qui inclut l'échange et la validation des informations d'origine), la connexion reste ouverte et devient bidirectionnelle.

Chaque paquet de données (envoyé du serveur ou du client) commence par un "\ x00" (zéro octet), est suivi de données codées UTF-8 et se termine par un "\ xeff" (tous les octets) .

Le projet de standard actuel est ici: http://tools.ietf.org / html / brouillon-hixie-thewebsocketprotocol-76

Vous pourriez également trouver la WSProxy incluse dans NOVNC pour être utile comme référence. WSPROXY est une bande Web générique au proxy de la prise TCP. Il y a à la fois une version C et Python de WSProxy incluse avec NOVNC.

http://github.com/kanaka/novnc/tree/master/utils /


0 commentaires

23
votes

d'une manière, c'est à la fois une requête HTTP et une prise TCP régulière.

Une connexion Websocket est demandée à l'aide d'une requête HTTP normale sur TCP. Certains en-têtes sont envoyés qui indiquent au serveur Web qu'il s'agit d'un site Web qui est demandé et non une page normale, mais fondamentalement C'est juste une demande HTTP.

Une fois la réponse envoyée du serveur, la connexion est mise à niveau. C'est-à-dire que la connexion TCP utilisée pour HTTP est détournée pour une appelle plus élevée: transfert de données bidirectionnelle et réel.

Une fois que vous avez la capacité de communiquer bidirectionnelle et efficacement (qui est la principale victoire de la comète), les horizons des développeurs ont considérablement augmenté. Soudainement, des choses comme les jeux MMO et la collaboration en temps réel, qui n'étaient pas possibles en utilisant uniquement des technologies Web, deviennent possibles.


5 commentaires

Question: Est-ce exactement comme optiner la demande HTTP et la garder ouverte? (comme comète interrogatoire long ...)? Ou est-ce quelque chose de différent


@Royinamir, oui, exactement la même chose, donnez ou prenez quelques en-têtes, sauf que vous n'avez pas à ouvrir une nouvelle connexion à chaque fois que vous souhaitez envoyer ou recevoir quelque chose.


Merci. Donc, il fait réellement vrai pousser ... (et ne répond pas à une demande ...)


Le serveur WebSocket répond à la demande avec un Réponse de mise à niveau , puis vous pouvez envoyer et Recevoir des messages WebSocket.


@ROYINAMIR Oui, il fait de la réalité. Non seulement appuyez simplement sur le serveur, sa connexion bidirectionnelle.



0
votes

Dans une telle situation, le rôle du serveur vient quand:

Dans HTML 5, Webswetket comme une fonte (Comm.) Not Walky-Talky. Protocole HTTP mis à niveau sur le protocole de Websocket. (WSS: // à partir de WS: //) Server doit pouvoir ouvrir le canal recto verso et par conséquent d'accord avec la communication Duplex. Veuillez également passer par ce lien: http://www.html5rocks.com/fr/Tutorials/websockets/basics/

merci.


0 commentaires