Bonjour,
Pour faire marcher mes websocket directement entre le navigateur web et l'arduino, je procède comme suit:
côté navigateur, un peu de javascript pour initier la connexion:
var source;
var data;
var object;
if (typeof (EventSource) == undefined)
{
// websockets non supportés par le navigateur
}
else
{
souce = new EventSource ("mon_event_handler");
souce.onmessage = function (event)
{
// ici, eval.data contient les données renvoyées par l'arduino
// cette partie est appelée à chaque envoi de données de l'arduino
}
}
et côté arduino:
pour préparer la socket, StartEventHandler doit être appelé dans le code du serveur web de l'arduino lorsqu'on détecte la bonne requête:
// ligne contient la 1ère ligne de texte lue sur la socket obtenue avec client = server.available ()
if (strcmp (ligne, "GET /mon_event_handler HTTP/1.1") == 0)
{
// fermeture de l'ancienne (on en garde qu'une à la fois)
if (_socketEventHandler)
_socketEventHandler->stop ();
// renvoi de l'entête
_socketEventHandler = client;
_socketEventHandler->println ("HTTP/1.1 200 OK\n");
_socketEventHandler->println ("Connection: keep-alive");
_socketEventHandler->println ("Cache-control: no-cache");
_socketEventHandler->println ("Content-Type: text/event-stream");
_socketEventHandler->println ("");
}
ensuite chaque fois qu'on veut envoyer des données dynamiquement au navigateur web, on écrit sur la socket _socketEventHandler:
_socketEventHandler->println ("data: ");
// écrire ici les données avec println
_socketEventHandler->println ("coucou :)");
// signaler la fin des données
_socketEventHandler->println ();
y'a sûrement quelques fautes, car c'est tiré de mon projet et adapté, mais le principe est là.
si ça peut aider quelqu'un…