usar socket protocolo net cuando django apache sockets mod-wsgi websocket

django - protocolo - socket vs websocket



Diferencia entre socket y websocket? (5)

Estoy construyendo una aplicación web que necesita comunicarse con otra aplicación usando conexiones de socket. Este es un nuevo territorio para mí, así que quiero estar seguro de que los sockets son diferentes a los websockets . Parece que solo son conceptualmente similares.

Preguntar porque inicialmente había planeado usar Django como la base de mi proyecto, pero en la publicación SO que vinculé con la anterior se deja muy claro que los websockets no son posibles (o al menos no son confiables, incluso con algo así como django-websockets ) usando la configuración preferida de Django (Apache con mod_wsgi). Sin embargo, he encontrado otras publicaciones que importan casualmente el módulo de socket de Python por algo tan simple como captar el nombre de host del servidor .

Asi que:

  • ¿Son realmente diferentes?
  • ¿Hay alguna razón para no usar Django para un proyecto que se basa en establecer conexiones de socket con un servidor externo?

Con respecto a su pregunta (b), tenga en cuenta que la especificación de Websocket no se ha finalizado. De acuerdo con el W3C :

Los implementadores deben ser conscientes de que esta especificación no es estable.

Personalmente, considero que Websockets también se está agotando para usar en este momento. Aunque probablemente los encuentre útiles en un año más o menos.


Para responder tu pregunta.

  1. A pesar de que logran (en general) cosas similares, , son realmente diferentes. WebSockets generalmente se ejecutan desde navegadores que se conectan a Application Server a través de un protocolo similar al HTTP que se ejecuta sobre TCP / IP . Por lo tanto, son principalmente para aplicaciones web que requieren una conexión permanente a su servidor. Por otro lado, los conectores simples son más potentes y genéricos. Se ejecutan sobre TCP / IP pero no están restringidos a navegadores o protocolo HTTP . Podrían ser utilizados para implementar cualquier tipo de comunicación.
  2. No. No hay ninguna razón.

Tendría que usar WebSockets (o algún módulo de protocolo similar, por ejemplo, como lo admite el complemento Flash) porque una aplicación de navegador normal simplemente no puede abrir un socket TCP puro.

El módulo Socket.IO disponible para node.js puede ayudar mucho, pero tenga en cuenta que no es un módulo de WebSocket puro en sí mismo.

En realidad, es un módulo de comunicaciones más genérico que puede ejecutarse sobre varios otros protocolos de red, incluidos WebSockets y sockets Flash.

Por lo tanto, si desea usar Socket.IO en el extremo del servidor, también debe usar sus códigos y objetos de cliente. No es fácil crear conexiones WebSocket sin socket.io a un servidor socket.io ya que tendría que emular su protocolo de mensaje.


WebSocket es solo otro protocolo de nivel de aplicación sobre protocolo TCP, al igual que HTTP.

Algunos fragmentos <Spring in Action 4> citados a continuación, esperan que pueda ayudarlo a comprender mejor WebSocket.

En su forma más simple, un WebSocket es solo un canal de comunicación entre dos aplicaciones (no necesariamente se trata de un navegador) ... La comunicación WebSocket se puede usar entre cualquier tipo de aplicación , pero el uso más común de WebSocket es facilitar la comunicación entre un aplicación de servidor y una aplicación basada en navegador.


Websockets usa sockets en su implementación. Websockets se basan en un protocolo estándar (ahora en la llamada final, pero aún no es definitivo) que define una conexión "handshake" y un mensaje "frame". Los dos lados siguen el procedimiento de handshake para aceptar una conexión mutuamente y luego usan el formato de mensaje estándar ("frame") para pasar mensajes de un lado a otro.

Estoy desarrollando un marco que le permitirá comunicarse directamente de máquina a máquina con el software instalado. Puede adaptarse a su propósito. Puede seguir mi blog si lo desea: http://highlevellogic.blogspot.com/2011/09/websocket-server-demonstration_26.html