Quelques grandes réponses des autres qui couvrent beaucoup de terrain. Voici un peu plus.
Le seul avantage des WebSockets plus de plugins, comme les Applets Java, Flash ou Silverlight, c'est que les WebSockets sont nativement intégrées dans les navigateurs et ne pas compter sur les plugins.
Si vous entendez par là que vous pouvez utiliser les Applets Java, Flash ou Silverlight pour établir une connexion de socket, alors oui, c'est possible. Cependant, vous ne voyez pas celui qui a été déployé dans le monde réel, trop souvent, en raison des restrictions.
Par exemple, les intermédiaires peuvent et arrêt de la circulation. Le WebSocket standard a été conçu pour être compatible avec l'existant HTTP infrastructure et est donc beaucoup moins enclin à être perturbé par des intermédiaires comme les pare-feu et les serveurs proxy.
En outre, WebSocket pouvez utiliser le port 80 et 443, sans exiger dédié ports, de nouveau grâce à la conception du protocole pour être aussi compatible que possible avec HTTP existants de l'infrastructure.
Ceux socket alternatives (Java, Flash et Silverlight) sont difficiles à utiliser en toute sécurité dans un cross-origin architecture. Ainsi, souvent, les gens de tenter de les utiliser de la croix-origine de tolérer l'insécurité plutôt que d'aller à l'effort de le faire en toute sécurité.
Ils peuvent aussi exiger d'autres "non-standard" ouverture de ports (quelque chose administrateurs sont réticents à le faire) ou de la politique de fichiers qui doivent être gérés.
En bref, à l'aide de Java, Flash ou Silverlight pour la prise de connectivité est assez problématique que vous ne le voyez pas déployé dans de graves architectures trop souvent. Flash et Java ont eu cette capacité pour probablement au moins 10 ans, et pourtant il n'est pas répandue.
Le WebSocket norme a été en mesure de commencer avec une nouvelle approche, portant les restrictions à l'esprit, et j'espère avoir appris quelques leçons.
Certains WebSocket implémentations utilisent Flash (ou, éventuellement, Silverlight et/ou Java) comme leur secours quand WebSocket connectivité ne peut pas être établie (comme lors de l'exécution dans un vieux navigateur ou lorsqu'un intermédiaire interfère).
Alors que certains sorte de stratégie de repli pour ces situations est intelligent, et même nécessaire, la plupart de ceux qui utilisent Flash et al vont souffrir les inconvénients décrits ci-dessus. Il n'a pas à être de cette façon -- il existe des solutions de contournement pour assurer la croix-origine capable de connexions à l'aide de Flash, Silverlight, etc-mais la plupart des implémentations ne le ferai pas, car il n'est pas facile.
Par exemple, si vous comptez sur WebSocket pour une croix d'origine de la connexion, qui fonctionne très bien. Mais si vous exécutez ensuite dans un vieux navigateur ou un pare-feu/proxy gêné et s'appuient sur Flash, par votre secours, vous trouverez qu'il est difficile de faire la même croix-origine de la connexion. À moins que vous ne se soucient pas de la sécurité, bien sûr.
Cela signifie qu'il est difficile d'avoir un seul architecture unifiée qui fonctionne en natif et non-natif connexions, sauf si vous êtes prêt à mettre dans un peu de travail, ou aller avec un cadre qui a fait de bien. Dans l'idéal, de l'architecture, vous ne l'auriez pas remarqué, si les connexions étaient natifs ou non; vos paramètres de sécurité serait de travailler dans les deux cas; votre de clustering paramètres fonctionne encore; votre planification de la capacité de demeurer; et ainsi de suite.
Le seul avantage des WebSockets sur streaming http, c'est que vous n'avez pas à faire un effort pour "comprendre" et d'analyser les données reçues.
Il n'est pas aussi simple que l'ouverture d'un flux HTTP et est assis à l'arrière comme votre flux de données pour les minutes, les heures, ou plus. Différents clients se comportent différemment et vous avez à gérer cela. Par exemple, certains clients ont de la mémoire tampon de données et de ne pas le publier à la demande jusqu'à un certain seuil est atteint. Pire encore, certains de ne pas transmettre les données à l'application jusqu'à ce que la connexion est fermée.
Donc, si vous envoyez plusieurs messages vers le client, il est possible que le client demande de ne pas recevoir les données jusqu'à 50 messages de données a été reçu, par exemple. Ce n'est pas trop en temps réel.
Alors que le streaming HTTP peut être une alternative viable lorsque WebSocket n'est pas disponible, il n'est pas une panacée. Il a besoin d'une bonne compréhension de travailler dans un robuste dans les badlands du Web dans des conditions réelles.
Existe-il d'autres différences significatives qui me manque?
Il y a autre chose que personne n'a encore parlé, donc je vais le mettre en place.
Le protocole WebSocket a été conçu pour être une couche de transport pour des protocoles de niveau supérieur. Alors que vous pouvez envoyer des messages JSON ou qu'est-ce-pas directement sur une connexion WebSocket, il peut également effectuer la norme ou de protocoles personnalisés.
Par exemple, vous pourriez faire AMQP ou XMPP sur WebSocket, comme les gens l'ont déjà fait. Ainsi, un client pourrait recevoir des messages à partir d'un courtier AMQP comme s'il était connecté directement au courtier lui-même (et, dans certains cas, il est).
Ou si vous avez un serveur existant avec certaines protocole personnalisé, vous pouvez transporter que plus de WebSocket, prolongeant ainsi que le serveur de back-end pour le Web. Souvent une application existante qui a été verrouillé dans l'entreprise peut élargir la portée à l'aide de WebSocket, sans avoir à modifier l'infrastructure back-end.
(Naturellement, vous voulez être capable de faire tout cela de manière sécurisée afin de vérifier avec le vendeur ou le WebSocket fournisseur.)
Certaines personnes ont mentionné WebSocket comme TCP pour le Web. Parce que, tout comme TCP transports des protocoles de niveau supérieur, WebSocket, mais d'une manière qui est compatible avec l'infrastructure Web.
Ainsi, alors que l'envoi de JSON (ou autre) des messages directement sur WebSocket est toujours possible, il faut aussi considérer les protocoles existants. Car, pour beaucoup de choses que vous voulez faire, il y a probablement un protocole qui a déjà été pensé de le faire.
Je suis désolé si je suis re-poser des questions ou de combiner beaucoup de questions déjà sur DONC en une seule question, mais je tiens simplement à faire sens parfait de toutes les info qui est sorti il y a sur soi et sur le web au sujet de ces concepts.
C'était une excellente question, et les réponses ont été très instructif!