web-dev-qa-db-fra.com

Les Websockets permettent-ils une communication p2p (navigateur à navigateur)?

Pour préciser quand je pose des questions sur la communication entre navigateurs, je veux dire sans serveur entre les messages de transfert. Je voudrais mettre en œuvre quelque chose comme ça pour un jeu. Si p2p dans les websockets n'est pas possible, existe-t-il des alternatives similaires? Toute aide est appréciée. 

58
Xavier

Non. Les navigateurs peuvent uniquement initier des connexions WebSockets, pas les recevoir. La spécification d'API du navigateur W3C définit uniquement le démarrage d'une connexion sortante.

Vous pouvez créer une application qui initie et accepte les connexions WebSockets, mais les navigateurs ne le font pas.

Vous pouvez regarder Pusher App que vous pouvez utiliser pour créer une application WebSockets avec plusieurs clients. Le service fournit gratuitement jusqu'à 20 clients WebSockets simultanés (vous pouvez payer pour une mise à l'échelle supérieure).

Mettre à jour:

Le protocole et l'API WebRTC progressent rapidement et permettent d'établir un canal de données entre deux homologues (vous pouvez toujours avoir besoin d'un serveur STUN/TURN pour la traversée initiale et la configuration NAT).

47
kanaka

En théorie, il est possible avec WebRTC DataChannel :

RTCDataChannel est une API WebRTC pour hautes performances, faible latence, communication peer-to-peer de données arbritaires. L'API est simple — semblable à WebSocket — mais la communication a lieu directement entre navigateurs, donc RTCDataChannel peut être beaucoup plus rapide que WebSocket même si un serveur relais (TURN) est requis (en cas d'échec de la «perforation» pour faire face à les pare-feu et les NAT).

"En théorie" car il n'est pas encore supporté par un navigateur stable et vous avez toujours besoin d'un serveur de relais (TURN) si l'un des navigateurs est derrière un symétrique NAT . Néanmoins, c'est une fonctionnalité très prometteuse.

Update: Chrome 26 et Firefox 22 prennent en charge RTCDataChannel par défaut et Firefox 19-21 si vous activez WebRTC en définissant media.peerconnection.enabled sur true (about: config).

30
Joel Richard

Je lisais à propos de Websocket et peer 2 peer et trouvé PeerJS .

Cependant, je n'ai encore rien fait, mais d'après les exemples, cela semble prometteur.

6
shadownrun

De nos jours, c’est possible, seuls Chrome, FF et Opera le prennent actuellement en charge (ordinateur de bureau).

Certaines bibliothèques commencent à apparaître sur le Web à l'heure actuelle, comme PeerJS et js-platform-p2p , ce qui simplifie grandement les choses.

0
eric.itzhak

Manière simple et fiable supportée par plusieurs navigateurs consiste à utiliser http://httprelay.io avec les appels AJAX. Il s’agit également de mettre en œuvre une communication sur plusieurs qui pourrait être utile au développement de jeux.

0
Jonas