Estoy creando una aplicación web que necesita comunicarse con otra aplicación mediante conexiones de socket. Este es un territorio nuevo para mí, así que quiero estar seguro de que los sockets son diferentes a los sockets web . Parece que solo son conceptualmente similares.
Preguntando porque inicialmente había planeado usar Django como la base de mi proyecto, pero en la publicación SO a la que me vinculé anteriormente, queda muy claro que los websockets no son posibles (o al menos no son confiables, incluso con algo como django-websockets) ) utilizando 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 tomar el nombre de host del servidor .
Entonces:
- ¿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?
Websockets usan sockets en su implementación. Websockets se basan en un protocolo estándar (ahora en la llamada final, pero aún no final) que define una conexión "apretón de manos" y un mensaje "marco". Las dos partes pasan por el procedimiento de protocolo de enlace para aceptar mutuamente una conexión y luego usan el formato de mensaje estándar ("marco") para pasar los 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
fuente
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
Socket.IO
módulo disponible paranode.js
puede ayudar mucho, pero tenga en cuenta que se trata no de un módulo de WebSocket puro en su propio derecho.En realidad, es un módulo de comunicaciones más genérico que puede ejecutarse sobre otros protocolos de red, incluidos WebSockets y Flash Sockets.
Por lo tanto, si desea usar
Socket.IO
en el servidor, también debe usar su código de cliente y sus objetos. No puede realizar fácilmenteWebSocket
conexiones sin formato a unsocket.io
servidor, ya que tendría que emular su protocolo de mensaje.fuente
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, espero que puedan ayudarlo a comprender mejor WebSocket.
fuente
Con respecto a su pregunta (b), tenga en cuenta que la especificación Websocket no se ha finalizado. De acuerdo con el W3C :
Personalmente, considero que Websockets es demasiado sangriento como para usarlo en la actualidad. Aunque probablemente los encuentre útiles en un año más o menos.
fuente