Dois-je utiliser WebSocket sur des ports autres que 80?

Dois-je utiliser WebSocket sur des ports autres que 80? Est-ce que cela gâche le but d’utiliser des infrastructures Web / HTTP existantes? Et je pense qu’il ne correspond plus au nom Web Socket sur les ports non 80.

Si j’utilise WebSocket sur d’autres ports, pourquoi ne pas utiliser directement TCP? Ou existe-t-il des avantages particuliers dans le protocole WebSocket lui-même?

Et puisque le handshake WebSocket actuel se présente sous la forme d’une requête HTTP UPGRADE, cela signifie-t-il que je dois activer le protocole HTTP sur le port pour que le handshake WebSocket puisse être accompli?

Dois-je utiliser WebSocket sur des ports autres que 80? Est-ce que cela gâche le but d’utiliser des infrastructures Web / HTTP existantes? Et je pense qu’il ne correspond plus au nom WebSocket sur les ports non 80.

Vous pouvez exécuter un serveur webSocket sur n’importe quel port autorisé par votre système d’exploitation hôte et auquel votre client sera autorisé à se connecter.

Cependant, l’exécution sur le port 80 (ou 443) présente plusieurs avantages.

  1. L’infrastructure réseau est généralement déjà déployée et ouverte sur le port 80 pour les connexions sortantes depuis les emplacements où les clients vivent (comme les ordinateurs de bureau, les appareils mobiles, etc.) vers les emplacements où vivent les serveurs (comme les centres de données). Par conséquent, de nouveaux trous dans la configuration du pare-feu ou du routeur, etc. ne sont généralement pas nécessaires pour déployer une application webSocket sur le port 80. Des modifications de configuration peuvent être nécessaires pour s’exécuter sur différents ports. Par exemple, de nombreux grands réseaux d’entreprise sont très exigeants quant aux ports auxquels les connexions sortantes peuvent être effectuées et sont configurés uniquement pour certains comportements standard et attendus. La sélection d’un port non standard pour une connexion webSocket peut ne pas être autorisée à partir de certains réseaux d’entreprise. C’est la raison BIG d’utiliser le port 80 (interopérabilité maximale avec les réseaux privés dotés de configurations verrouillées).

  2. De nombreuses applications webSocket exécutées à partir du navigateur souhaitent tirer parti de l’infrastructure de sécurité / connexion / authentification existante déjà utilisée sur le port 80 pour la page Web hôte. L’utilisation de cette même infrastructure pour vérifier l’authentification d’une connexion WebSocket peut être plus simple si tout se trouve sur le même port.

  3. Certaines infrastructures de serveur pour les WebSockets (telles que socket.io dans node.js) utilisent une infrastructure de serveur combinée (processus unique, un écouteur) pour prendre en charge les requêtes HTTP et les WebSockets. C’est plus simple si les deux sont sur le même port.


Si j’utilise WebSocket sur d’autres ports, pourquoi ne pas utiliser directement TCP? Ou y a-t-il des avantages particuliers dans le protocole WebSocket lui-même?

Le protocole webSocket a été défini à l’origine pour fonctionner à partir d’un navigateur vers un serveur. Il n’y a pas d’access TCP générique à partir d’un navigateur, donc si vous souhaitez un socket persistant sans modules complémentaires de navigateur personnalisés, WebSocket est proposé. Par rapport à une connexion TCP simple, le protocole webSocket offre la possibilité d’exploiter l’authentification HTTP et les cookies, un moyen standard de faire du ping / pong permanent au niveau de l’application et de bout en bout (TCP offre un niveau de vie constant) , mais pas de bout en bout), un protocole de cadrage intégré (vous devrez concevoir vos propres formats de paquet en TCP) et de nombreuses bibliothèques prenant en charge ces fonctionnalités de haut niveau. En gros, webSocket fonctionne à un niveau supérieur à celui de TCP (en utilisant TCP sous les couvertures) et offre plus de fonctionnalités intégrées que la plupart des gens trouvent utiles. Par exemple, si vous utilisez TCP, l’une des premières choses à faire est d’obtenir ou de concevoir un protocole (un moyen d’exprimer vos données). Ceci est déjà intégré avec webSocket.

Et puisque le handshake WebSocket actuel se présente sous la forme d’une requête HTTP UPGRADE, cela signifie-t-il que je dois activer le protocole HTTP sur le port pour que le handshake WebSocket puisse être accompli?

Vous DEVEZ avoir un serveur HTTP en cours d’exécution sur le port sur lequel vous souhaitez utiliser webSocket, car toutes les requêtes webSocket commencent par une requête HTTP. Ce serveur HTTP ne devrait pas être très complet, mais il doit gérer la requête HTTP initiale.

À mon avis, oui, vous pouvez. 80 est le port par défaut, mais vous pouvez le modifier à votre guise.