web-dev-qa-db-fra.com

Comment utiliser les sockets dans JavaScript \ HTML?

Comment utiliser les sockets dans JavaScript\HTML?

Peut-être en utilisant du bon HTML5?

Bibliothèques? Des tutoriels? Articles de blog?

82
Rella

Caractéristiques:

Des articles:

Didacticiel:

Bibliothèques:

55
o.k.w

Comment utiliser les sockets en JavaScript/HTML?

Il n’existe aucune installation permettant d’utiliser des sockets polyvalents en JS ou HTML. Ce serait un désastre pour la sécurité, pour un.

Il y a WebSocket en HTML5. Le côté client est assez trivial:

socket= new WebSocket('ws://www.example.com:8000/somesocket');
socket.onopen= function() {
    socket.send('hello');
};
socket.onmessage= function(s) {
    alert('got reply '+s);
};

Vous aurez besoin d’une application de socket spécialisée côté serveur pour prendre les connexions et en faire quelque chose; ce n'est pas quelque chose que vous feriez normalement depuis l'interface de script d'un serveur Web. Cependant, il s'agit d'un protocole relativement simple ; mon noddy Python Le point de terminaison basé sur SocketServer ne comportait que quelques pages de code.

En tout cas, ça n'existe pas encore. Ni les spécifications côté JavaScript ni les spécifications de transport réseau ne sont définies, et aucun navigateur ne les prend en charge.

Vous pouvez toutefois utiliser Flash, le cas échéant, pour fournir un repli à votre script jusqu'à ce que WebSocket soit largement disponible. Gimite's web-socket-js en est un exemple gratuit. Cependant, vous êtes soumis aux mêmes limitations que Flash Sockets, à savoir que votre serveur doit pouvoir cracher une stratégie entre domaines à la demande du port de socket, et vous aurez souvent des difficultés avec les proxies/pare-feu. (Les sockets Flash sont fabriqués directement; pour ceux qui n'ont pas d'accès IP public direct et ne peuvent sortir du réseau que par un proxy HTTP, ils ne fonctionnent pas.)

Sauf si vous avez vraiment besoin d'une communication bidirectionnelle à faible temps de latence, il est préférable de vous en tenir à XMLHttpRequest pour le moment.

75
bobince

Je pense qu’il est important de mentionner, maintenant que cette question date de plus d’un an, que Socket.IO est depuis sorti et semble être le moyen principal de travailler avec les sockets du navigateur; il est également compatible avec Node.js autant que je sache.

46
Ricket