PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 27 → SocketConnect en mode navigateur sur une machine locale
SocketConnect en mode navigateur sur une machine locale
Débuté par thamis, 18 aoû. 2022 14:38 - 4 réponses
Membre enregistré
61 messages
Popularité : +1 (1 vote)
Posté le 18 août 2022 - 14:38
Bonjour,

Je ne sais pas si cela est possible en terme de sécurité ou bien techniquement.

Une application web hébergée, appelée sur le navigateur d'un machine (PC) qui a une fonction de connexion à un driver qui nécessite la connexion Socket sur un port.

Si je teste cela en mode serveur, bien entendu la connexion à la socket est faite sur le serveur pas sur la machine où la page a été lancée, donc ça ne fonctionne pas.

Si je teste cela en mode Go cela fonctionne car le serveur, ma machine de dev et PC avec Driver sont sur le même réseau, donc l'ouverture de la socket fonctionne

Donc ma question est, est-il possible depuis la page web (donc code navigateur) d'établir une connexion socket sur l'adresse IP d'où la page web est lancée.

J'espère que ce que j'ai écrit est compréhensible :)

thamis

--
Cordialement,

Fred
Membre enregistré
323 messages
Popularité : +20 (20 votes)
Posté le 19 août 2022 - 14:29
Tu as essayé avec localhost a la place de l'adresse serveur ?
Membre enregistré
61 messages
Popularité : +1 (1 vote)
Posté le 22 août 2022 - 13:40
stef1811 a écrit :
> Tu as essayé avec localhost a la place de l'adresse serveur ?

Bonjour,

Effectivement j'ai déjà essayé avec Localhost, mais sachant que le SocketConnect est fait en mode serveur, la tentative est faite sur le serveur par sur le client. Finalement je crois qu'il n'est pas possible pour des raisons de sécurité d'accéder depuis le navigateur à une ressource (socket) sur le poste où est lancé le navigateur, enfin je vais finir par le penser :(

--
Cordialement,

Fred
Message modifié, 22 août 2022 - 13:40
Membre enregistré
253 messages
Popularité : +13 (13 votes)
Posté le 22 août 2022 - 14:30
Bonjour,

La fonction SocketConnecte() est disponible en code navigateur. Cependant, les navigateurs n'ont accès qu'à un usage particulier de socket : les websockets. Ils sont particuliers notamment dans le handshake réalisé au début.

Si votre driver possède un format tout à fait différent des websockets, il ne sera pas possible de s'y connecter avec seulement du code navigateur. Une solution (dont la pertinence dépend de votre cas d'usage) serait alors d'installer sur les postes un service "passe-plat" qui communique avec les navigateurs d'un côté en websocket, et avec le driver de l'autre côté en mode socket classique.

Si le driver accepte une connexion en websocket, alors le SocketConnecte() devrait normalement fonctionner. Attention, si le site est servi en HTTPS, le serveur de websocket devra aussi fonctionner en TLS (wss:// au lieu de ws://). Une exception est faite pour le domaine localhost, qui lui est accessible sans TLS car il fait partie des secure contexts : https://developer.mozilla.org/fr/docs/Web/Security/Secure_Contexts
Membre enregistré
61 messages
Popularité : +1 (1 vote)
Posté le 22 août 2022 - 17:30
Bonjour,

Merci d'avoir pris le temps d'écrire cette réponse claire et détaillée, je vais maintenant creuser un peu plus le sujet des Websockets.

Thamis

--
Cordialement,

Fred