2011-01-04 2 views
9

D'accord, je viens d'essayer la nouvelle classe WebSocket dans HTML 5, et était assez excité qu'ils existent; Cependant, je ne vois pas comment ils sont beaucoup plus gratifiants que AJAX vu comment ils commencent encore un appel HTTP et sont pas comme les sockets conventionnels. C'est pourquoi je demande ici.JS/HTML5 WebSocket: Connectez-vous sans appel HTTP

Y a-t-il un moyen avec la classe WebSocket de HTML 5 de se connecter à une socket d'écoute sans envoyer de données HTTP? Actuellement, avec le constructeur TCP/IP, il montre toutes ces conneries d'en-tête que je ne veux pas (puisque je veux me connecter aux serveurs POP3/IMAP sans des choses comme les ponts Flash ou Comet).

Possible?

Sortie de connexion:

Listening for connections...Connected 
GET/HTTP/1.1 
Upgrade: WebSocket 
Connection: Upgrade 
Host: localhost:666 
Origin: null 
Sec-WebSocket-Key1: 2 987_390VNw60yi9 
Sec-WebSocket-Key2: ~196 Y p 5 P67 428 ? 
+0

Juste une mise à jour; Le W3C semble être une API de socket TCP/UDP * pure *, même si je suis sûr qu'il faudra plusieurs années avant que nous voyions une sorte de fonctionnalité pour cela. – Qix

Répondre

5

Non, une fois que la connexion est établie, vous avez une véritable prise. Mais vous avez raison, cela nécessite un support spécial du serveur. Il ne vous permettra donc pas de vous connecter à un serveur POP ou IMAP non modifié.

Ils ont choisi cette conception (le mécanisme de mise à niveau) afin que vous puissiez facilement avoir un serveur qui a écouté les connexions WebSocket ainsi que les vraies demandes HTTP.

Il est encore une grande différence d'AJAX et de COMET. Vous pouvez utiliser WebSockets pour avoir une véritable communication en duplex intégral entre le serveur et le client. Les API de navigateur précédentes n'ont pas fourni cela, forçant les utilisateurs à utiliser diverses solutions de rechange (telles que les requêtes AJAX répétées, l'image permanente de COMET, etc.).

+0

Donc c'est à peu près AJAX qui ne se ferme pas? Un peu comme un cadre pour toujours combiné avec AJAX. Nifty, mais pas si chouette en même temps. Merci pour l'information! – Qix

+0

ce n'est pas tout à fait un socket TCP pur après la poignée de main car il y a un cadrage supplémentaire pour chaque image. @ Di-0xide, c'est vraiment plus comme une socket avec une poignée de main HTTP-like (et un peu de cadrage minimal). La poignée de main facilite l'ajout de la prise en charge de WebSockets aux serveurs Web et aux proxys, mais c'est tout. Ce n'est pas une requête HTTP, c'est une poignée de main WebSockets qui ressemble juste à HTTP. – kanaka

+0

@kanaka, je ne voulais pas dire que c'était un socket TCP. Il existe de nombreux autres types (UDP, raw, domain, etc.). WebSocket est encore un autre. –