Différence entre socket et websocket?

je construis application web qui a besoin de communiquer avec une autre application en utilisant des connexions socket. C'est un nouveau territoire pour moi, donc je veux être sûr que sockets sont différents de websockets . On dirait qu'ils ne sont que conceptuellement similaires.

demandant parce qu'au départ J'avais prévu D'utiliser Django comme base pour mon projet, mais dans le so post j'ai relié au dessus il est très clair que websockets ne sont pas possibles (ou du moins pas fiables, même avec quelque chose comme django-websockets) en utilisant la configuration Django préférée (Apache avec mod_wsgi). Pourtant, j'ai trouvé d'autres messages qui importent fortuitement le module socket de Python pour quelque chose d'aussi simple que en saisissant le nom d'hôte du serveur .

:

  • Sont-ils vraiment différents?
  • N'y a-t-il aucune raison de ne pas utiliser Django pour un projet qui repose sur établir des connexions socket avec un serveur externe?
112
demandé sur Community 2011-02-11 23:19:57

5 réponses

pour répondre à vos questions.

  1. bien qu'ils atteignent (en général) des choses similaires, Oui , ils sont vraiment différent. Les WebSockets s'exécutent généralement à partir de navigateurs se connectant au serveur D'Application sur un protocole similaire à HTTP qui s'exécute sur TCP/IP . Ils sont donc principalement destinés à des Applications Web qui nécessitent une connexion permanente à son serveur. Sur le d'autre part, les sockets simples sont plus puissants et génériques. Ils tournent sur TCP / IP mais ils ne sont pas limités aux navigateurs ou HTTP protocole. Ils pourraient être utilisés pour mettre en œuvre tout type de communication.
  2. Pas de. Il n'y a pas de raison.
82
répondu Pablo Santa Cruz 2013-05-10 15:17:41
Les Websockets

utilisent des sockets dans leur implémentation. Les Websockets sont basés sur un protocole standard (maintenant dans l'appel final, mais pas encore final) qui définit une connexion "poignée de main" et un message "frame."Les deux parties passent par la procédure de poignée de main pour accepter mutuellement une connexion et ensuite utiliser le format de message standard ("frame") pour passer des messages de part et d'autre.

je développe un cadre qui vous permettra de communiquer directement machine à machine avec logiciel installé. Il pourrait convenir à votre but. Vous pouvez suivre mon blog si vous le souhaitez: http://highlevellogic.blogspot.com/2011/09/websocket-server-demonstration_26.html

12
répondu Roger F. Gay 2011-09-29 17:01:50

vous auriez à utiliser des WebSockets (ou certains module de protocole similaire, par exemple comme pris en charge par le plugin Flash) parce qu'une application normale de navigateur ne peut tout simplement pas ouvrir un socket TCP pur.

le Socket.IO module Disponible pour node.js peut aider beaucoup, mais notez qu'il est pas un pur module WebSocket en soi.

c'est en fait un module de communication plus générique qui peut exécuter en plus de divers autres protocoles de réseau, y compris les WebSockets, et les sockets Flash.

par conséquent, si vous voulez utiliser Socket.IO à la fin du serveur, vous devez également utiliser leur code client et les objets. Vous ne pouvez pas facilement faire des connexions raw WebSocket à un serveur socket.io car vous auriez à émuler leur protocole de message.

9
répondu Alnitak 2011-02-11 20:45:13

WebSocket est juste un autre protocole au niveau de l'application sur le protocole TCP, tout comme HTTP.

quelques extraits de < Spring in Action 4> cités ci-dessous, espérons qu'ils pourront vous aider à mieux comprendre WebSocket.

dans sa forme la plus simple, un WebSocket est juste un canal de communication entre deux applications (pas nécessairement un navigateur est impliquer.)..La communication WebSocket peut être utilisée entre toutes sortes de applications , mais L'utilisation la plus courante de WebSocket est de faciliter la communication entre une application serveur et une application basée navigateur.

3
répondu smwikipedia 2016-04-16 03:53:27

en ce qui concerne votre question (b), sachez que la spécification Websocket n'a pas été finalisée. Selon le W3C :

Les opérateurs

doivent savoir que cette spécification n'est pas stable.

personnellement, je considère que les Websockets sont trop tranchants pour être utilisés à l'heure actuelle. Mais je les trouverai sûrement utiles dans un an ou deux.

2
répondu Phil Hunt 2011-02-11 22:59:00