Je construis une application Web qui doit communiquer avec une autre application à l'aide de connexions socket. C'est un nouveau territoire pour moi, alors je veux être sûr que les sockets sont différents des websockets . Il semble qu'ils ne soient similaires que sur le plan conceptuel.
Demander parce qu'au départ j'avais prévu d'utiliser Django comme base de mon projet, mais dans le message SO que j'ai lié ci-dessus, il est très clair que les 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 articles qui importent avec désinvolture le module socket de Python pour quelque chose d'aussi simple que de saisir le nom d'hôte du serveur .
Alors:
- Sont-ils vraiment différents?
- Y a-t-il une raison de ne pas utiliser Django pour un projet qui repose sur l'établissement de connexions socket avec un serveur extérieur?
Les Websockets utilisent des sockets dans leur implémentation. Les Websockets sont basés sur un protocole standard (maintenant en appel final, mais pas encore final) qui définit une connexion "handshake" et un message "frame". Les deux côtés passent par la procédure de prise de contact pour accepter mutuellement une connexion, puis utilisent le format de message standard («cadre») pour faire passer les messages dans les deux sens.
Je développe un framework qui vous permettra de communiquer directement de machine à machine avec le logiciel installé. Cela pourrait convenir à votre objectif. Vous pouvez suivre mon blog si vous le souhaitez: http://highlevellogic.blogspot.com/2011/09/websocket-server-demonstration_26.html
la source
Vous devrez utiliser WebSockets (ou un module de protocole similaire, par exemple, pris en charge par le plugin Flash) car une application de navigateur normale ne peut tout simplement pas ouvrir une socket TCP pure.
Le
Socket.IO
module disponible pournode.js
peut aider beaucoup, mais notez qu'il ne s'agit pas d' un module WebSocket à part entière.Il s'agit en fait d'un module de communication plus générique qui peut fonctionner sur divers autres protocoles réseau, y compris les WebSockets et les sockets Flash.
Par conséquent, si vous souhaitez utiliser
Socket.IO
sur le serveur, vous devez également utiliser leur code client et leurs objets. Vous ne pouvez pas facilement établir desWebSocket
connexions brutes à unsocket.io
serveur car vous devrez émuler leur protocole de message.la source
WebSocket n'est qu'un autre protocole de niveau application sur protocole TCP, tout comme HTTP.
Quelques extraits de <Spring in Action 4> cités ci-dessous, espérons que cela vous aidera à mieux comprendre WebSocket.
la source
Concernant votre question (b), sachez que la spécification Websocket n'a pas été finalisée. Selon le W3C :
Personnellement, je considère Websockets comme étant trop avant-gardiste pour être utilisé actuellement. Bien que je les trouverai probablement utiles dans un an environ.
la source