web-dev-qa-db-fra.com

Connexion à HTML5 Websocket

Je suis un peu confus au sujet de HTML5 Websockets. J'ai consulté de nombreux tutoriels et beaucoup d'entre eux présentent différentes variantes de connexion à l'aide de différents ports. Que signifient ces ports?

Adobe par exemple, utilise ceci:

new WebSocket('ws://localhost:1740');

Puis un autre tutorial a ceci où aucun port n'est requis: 

new WebSocket("ws://www.websockets.org");

Et enfin un troisième tutoriel a un port, mais c'est complètement différent: 

new WebSocket("ws://localhost:8080/echo");

Ma question serait, pourquoi sont-ils variables? Comment savoir à quels ports se connecter? Aussi, j'ai essayé de faire ma propre connexion:

var ws = new WebSocket("ws://test.ontarget-network.com/");

Mais j'obtiens l'erreur suivante: Unexpected response code: 200

J'ai fait des tests et essayé de me connecter à divers autres "ports" (sans savoir ce que je fais évidemment, en tapant des nombres aléatoires) et cette erreur disparaîtrait cependant, mon code 

ws.onopen = function(){
   alert("Connection Established");
};

n'exécuterait pas. 

J'essaie de bien comprendre l'API Websockets de HTML5 pour pouvoir expérimenter et créer des applications plus dynamiques. Merci pour l'aide.

13
Majo0od

Ce qui suit provient du dernier projet WebSocket :

Par défaut, le protocole WebSocket utilise le port 80 pour les connexions WebSocket Standard et le port 443 pour les connexions WebSocket tunnelées via TLS [RFC2818].

En réalité, vous devriez pouvoir utiliser n’importe quel port valide non utilisé. Tant que les clients tentent de se connecter au même port que le script côté serveur s'ouvre pour la connexion de socket, tout devrait bien se passer.

Un petit mot sur les ports:
- Le port 80 est le port HTTP.
- Le port 8080 est l'autre port HTTP.
- Le port 443 est le port HTTPS (c'est-à-dire HTTP avec TLS).
- Le port 1740 du code Adobe semble être un port aléatoire qui n’est pas déjà utilisé par d’autres services.

Pour une liste complète des ports prédéfinis, veuillez consulter les éléments suivants:
http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

En ce qui concerne votre erreur "Code de réponse inattendu: 200", je suppose que l'URL WebSocket que vous utilisez côté client ne pointe pas vers un script côté serveur valide, mais il est difficile de commenter sans plus d'informations.

12
HartleySan

Le serveur doit avoir un noeud final qui accepte les connexions WebSocket. Ainsi, si ce noeud final est /echo, vous souhaitez vous connecter à:

ws://localhost:8080/echo/websocket

Vous obtiendrez l'erreur Unexpected response code: 200 si vous excluez le suffixe /websocket après le noeud final. J'avais la même confusion et ce lien éclairci un peu les choses pour moi.

12
hartz89

J'ai eu le même problème, mais pour survivre avec 

Unexpected response code: 200

Vous devez disposer d’un script côté serveur pour gérer le socket Web ou vous pouvez utiliser Node.js pour créer un script serveur. Par souci d’éducation, vous pouvez essayer de créer votre propre script. script de serveur websocket.

0
Manee.O.H