web-dev-qa-db-fra.com

Comment parler aux sockets UDP avec HTML5?

Ce que j’ai: Un serveur d’applications C++ en cours d’exécution, prêt à envoyer des données au client, qui est supposé être redirigé vers une page ou une application HTML5.

Ce que je veux: Y a-t-il un moyen de communiquer en utilisant le port udp avec HTML5 étant donné que le serveur c ++ et l'application HTML5 sont locaux pour le système?

Ce que je sais :  

  • Pour des raisons de sécurité, JS n'autorise pas les communications par port UDP à partir du navigateur.
  • J'ai lu dans de nombreux endroits, la réponse est non. Mais les réponses sont anciennes.

La réponse est-elle toujours «NON»?

Y a-t-il une solution de rechange possible?

Toute avance est appréciée.

29
mkkhedawat

Oui, la réponse est toujours "non". Les Websockets sont basés sur TCP. Notez qu'un WebSocket n'est pas une simple connexion TCP, il existe une négociation HTTP et un protocole de trame en place. Par conséquent, vous ne pouvez pas non plus créer une connexion simple TCP en Javascript.

WebRTC est basé sur UDP, il peut couvrir vos cas d'utilisation: http://www.html5rocks.com/fr/tutorials/webrtc/datachannels/

21
vtortola

Chrome semble maintenant avoir quelque chose: https://developer.chrome.com/apps/sockets_udp

7
dee

Ceci est un important { problème pour les joueurs }. Voir ce lien pour une discussion sur les websockets, webrtc, quic (en chrome) et l'auteur netcode.io

2
Diagon

Vous pouvez également créer un serveur local python supplémentaire pour relier les données entre votre application C++ et votre page Web. 

La page Web html5 se connecte à un port local permettant une connexion via un socket Web (utilisez Flask/tornado). 

L'application C++ se connecte à un écouteur UDP sur un autre port. Voir https://wiki.python.org/moin/UdpCommunication pour configurer. 

Le serveur python forme essentiellement un pont de données transparent entre le port UDP et la connexion websocket. 

0
user8862884