Estou criando um aplicativo da web que precisa se comunicar com outro aplicativo usando conexões de soquete. Este é um novo território para mim, então, tenha certeza de que os soquetes são diferentes dos websockets . Parece que eles são apenas conceitualmente semelhantes.
Perguntando, porque inicialmente eu planejava usar o Django como base para o meu projeto, mas no post do SO a que vinculei acima, ficou muito claro que os websockets não são possíveis (ou pelo menos não são confiáveis, mesmo com algo como django-websockets ) usando a configuração preferida do Django (Apache com mod_wsgi). No entanto, encontrei outras postagens que importam casualmente o módulo de soquete do Python para algo tão simples quanto pegar o nome do host do servidor .
Assim:
- Eles são realmente diferentes?
- Existe alguma razão para não usar o Django para um projeto que depende do estabelecimento de conexões de soquete com um servidor externo?
Websockets usam soquetes em sua implementação. Os Websockets são baseados em um protocolo padrão (agora em chamada final, mas ainda não final) que define um "handshake" de conexão e um "frame" de mensagem. Os dois lados passam pelo procedimento de handshake para aceitar uma conexão mutuamente e, em seguida, usam o formato de mensagem padrão ("quadro") para passar mensagens para frente e para trás.
Estou desenvolvendo uma estrutura que permitirá que você se comunique diretamente de máquina para máquina com o software instalado. Pode servir ao seu propósito. Você pode seguir o meu blog, se desejar: http://highlevellogic.blogspot.com/2011/09/websocket-server-demonstration_26.html
fonte
Você precisaria usar WebSockets (ou alguns módulo de protocolo semelhante, por exemplo, como suportado pelo plug-in Flash) porque um aplicativo normal de navegador simplesmente não pode abrir um soquete TCP puro.
O
Socket.IO
módulo disponível paranode.js
pode ajudar muito, mas nota que é não um módulo WebSocket puro em seu próprio direito.Na verdade, é um módulo de comunicação mais genérico que pode ser executado em cima de vários outros protocolos de rede, incluindo WebSockets e soquetes Flash.
Portanto, se você deseja usar
Socket.IO
no servidor, também deve usar o código e os objetos do cliente. Você não pode facilmente fazerWebSocket
conexões brutas com umsocket.io
servidor, pois teria que emular o protocolo de mensagens deles.fonte
O WebSocket é apenas outro protocolo no nível do aplicativo sobre o protocolo TCP, assim como o HTTP.
Alguns trechos <Spring in Action 4> citados abaixo, espero que possam ajudá-lo a entender melhor o WebSocket.
fonte
Em relação à sua pergunta (b), lembre-se de que a especificação Websocket não foi finalizada. De acordo com o W3C :
Pessoalmente, considero que os Websockets são muito avançados para serem usados no momento. Embora eu provavelmente os ache úteis em um ano ou mais.
fonte