Probleme de connexion WebSocket

Bonjour, j'essai de réaliser une connexion bidirectionnelle à base de WebSocket. Le problème c'est qu'à chaque fois et avec plusieurs exemples trouvés sur internet cela ce deconnecte. J'ai ce message dans le moniteur

Client connected
Analyzing request headers
Got Line: 60GET / HTTP/1.1
Got Line: Host: 192.168.1.98
Got Line: User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:16.0) Gecko/20100101 Firefox/16.0
Got Line: Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Got Line: Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Got Line: Accept-Encoding: gzip, deflate
Got Line: Connection: keep-alive, Upgrade
Got Line: Sec-WebSocket-Version: 13
Got Line: Origin: null
Got Line: Sec-WebSocket-Key: 2eR4hNrGES7th5ZG9hkADQ==
Got Line: Pragma: no-cache
Got Line: Cache-Control: no-cache
Got Line: Upgrade: websocket
Got Line: 
Header mismatch
Disconnecting client
Terminating socket

J'ai le même message avec Mozilla et Chrome Auriez vous une idé pour me dépanner ou un exemple qui marche chez vous? Merci d'avance

J'ai recement fait des essais avec la lib de Brendan Hall https://github.com/brandenhall/Arduino-Websocket J'ai l'impression de reconnaitre les traces de cette lib que tu as activé avec #define DEBUGGING

De mon coté j'utilisais Chrome et non pas FF. Je te suggère de faire un essai avec Chrome. J'essayerais FF plus tard si j'ai un peu de temps.

D'après ce que je vois du code de la lib et des traces, le "Header mismatch" vient que la lib n'a pas reconnu le header "Upgrade: websocket"

Par ailleurs, j'ai eu pas mal de problèmes liés à l'utilisation des String dans cette lib. Je m'en suis sortit uniquement en mettant a jour la chaîne de compilation AVR. Si plus tard tu rencontres des problèmes de blocages incompréhensibles, ca viendra peut-être de là.

Non j'ai pas utilisé cette exemple car il fonctionne pour du Wifi et moi j'utilise le module Ethernet WS5100 et j'ai pas réussi à l'adapté

J’ai pas touché à la lib pour l’utiliser en W5100
Voici le code de l’exemple adapté pour W5100 ci attaché et qui marche avec la lib de Brendan Hall

Qu’as tu utilisé alors ?

WebSocketServer_demo.ino (3.84 KB)

J'ai utilisé une autre librairie un peut plus simplifié. Auriez vous une page HTML exemple car la ca me met "Connecting..." et plus rien!

J'ai mis à jour l'Avr et cela à régler quelque problème mais j'ai l'impression que mon navigateur n'arrive pas à envoyer ou recevoir les requêtes de l'arduino. J'ai essayé avec Chrome et Mozilla mais j'obtiens les mêmes effets. T'aurais pas une idée d'où cela pourrais venir?

Pas la moindre puisque je ne sais toujours pas ce que tu utilises. Je n'ai testé que la lib de Brendan Hall.

Je suis passer sous cette librairie pour coller à ton exemple

il y a un exemple de page HTML fournie dans l’exemple
Chez moi avec Chrome 22 ca passe impeccable depuis que j’ai mis à jour le compilateur

Dans la lib, dans le fichier WebSockerServer.cpp enlève le commentaire devant #define DEBUGGING et recompile l’exemple
Que deviennent les traces ?

Voici ce que j'obtiens

Go...
Setting up Ethernet connection...
Arduino is at 192.168.1.98
Connecting...
Client connected
Analyzing request headers
Got Line: GET / HTTP/1.1
Got Line: Upgrade: websocket
Got Line: Connection: Upgrade
Got Line: Host: 192.168.1.98
Got Line: Origin: null
Got Line: Sec-WebSocket-Key: 4agzrjEEV8P3qSkgFGeDLQ==
Got Line: Sec-WebSocket-Version: 13
Got Line: Sec-WebSocket-Extensions: x-webkit-deflate-frame
Got Line: 
Websocket established
Connected!
Sending data: a1510
Sending data: a2394
Sending data: a3330
Sending data: a1510
Sending data: a2446

Et les barres de couleur de la page HTML de l'exemple ne bouge pas et rien ne se passe qu'en je coche "pin 8" et "pin 9"

Coté Arduino ca se passe bien, le handshake à eu lieu et l'Arduino envoie des messages.

Il faudrait aussi voir les traces dans la console JavaScript Dans Chrome c'est dans le menu Outils -> Console JavaScript (Ctrl+Maj+I)

Je n'ai pas testé avec FFox. J'essayerais plus tard pour voir s'il y a une différence de comportement ce qui ne serais pas étonnant vu que les WebSockets sont loin d'être super stable, que Google pousse et que FFox les a longtemps gardé désactivées.

Voila ce que j'ai dans Chrome

Request URL:ws://192.168.1.98/
Request Method:GET
Status Code:101 Web Socket Protocol Handshake
Request Headersview source
Connection:Upgrade
Host:192.168.1.98
Origin:null
Sec-WebSocket-Extensions:x-webkit-deflate-frame
Sec-WebSocket-Key:zRqoDVMK9lZeDA9Guca9gg==
Sec-WebSocket-Version:13
Upgrade:websocket
(Key3):00:00:00:00:00:00:00:00
Response Headersview source
Connection:Upgrade
Sec-WebSocket-Accept:nZ1GlKfjDJSC6fTE6HpC6jslD2I=
Upgrade:websocket
(Challenge Response):00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

Et il m'annonce que j'ai 44B d4envoyer mais rien de reçu! Bizarre! Et encore merci de prendre du temps pour m'aider

C’est les traces de la console JavaScript de Chrome ca ?
Moi, les traces que j’ai c’est plutôt comme ci attaché :
Chrome : Version 22.0.1229.94 m

Comme tu peux le voir ca marche dans les 2 sens

Je n’ai pas activé les traces dans la lib.

Je regarde sous FFox maintenant

Comportement exactement identique avec FFox 16.0.1

Autant pour moi voici console Chrome

Et coté Arduino ?
Tu reçoit quelque chose ?

Je te remet ci-dessous mon code d’exemple et mon code HTML.
j’ai légèrement modifié le code HTML/JavaScript pour avoir plus de traces
Mon code d’exemple, si c’est celui-ci que tu utilises, n’envoie les valeurs analogiques qu’1 fois par seconde.

WebSocketServer.html (2.82 KB)

WebSocketServer_demo.ino (3.84 KB)

Merci pour les exemples.
Je viens d’essayer et cela fait pareil.
L’Arduino affiche bien “sent” mais elle ne reçoit rien venant de la page HTML pourtant la page à l’air de bien envoyer voir photo jointe.
De plus en plus bizarre et incompréhensible.

Sais tu te servir de Wireshark pour espionner le dialogue entre ton navigateur et l'Arduino ?

Qu'elle est ta version de Chrome ? Est-ce que ça serait une vielle version qui ne supporte pas la même version de protocole WebSocket ?

Non je ne connais pas Wireshark. Et c'est la dernière version de Chrome je l'ai téléchargé ce matin. J'essaierais demain sur un autre ordinateur car il y a peut quelque chose qui bloque sur celui là. Et je regarde pour Wireshark

Voila ce que me donne Wireshark