I've written a crypto module to use on boards without the crypto module in firmware - it implements the SHA1 used by the web sockets module. The ws module does not need to be modified.
For testing if the crypto.js file is copied down to a web ide project it can be tested.
The following code assumes the ESP8266 has a wifi.save and is connected to a network.
var page = '<!DOCTYPE html><html lang=en><head><meta charset=utf-8>';
page += ' <meta http-equiv=X-UA-Compatible content="IE=edge">';
page += '<meta name=viewport content="width=device-width,initial-scale=1">';
page += '<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">';
page += '</head><body>';
page += '<div class="well well-lgt">';
page += '<div class="panel-heading"><h3>Websockets</h3></div>';
page += '<button class="btn btn-warning" id="send" onClick="ws.send(count);count=count+1;this.innerHTML=\'Send \'+count">Send to Espruino</button>';
page += '<ul id="list" class="list-group"></ul>';
page += '</div>';
page += '<script>';
page += 'var ws,count=1;setTimeout(function(){';
page += 'ws = new WebSocket("ws://" + location.host + "/my_websocket", "protocolOne");';
page += 'ws.onmessage = function (event) { console.log({msg:event.data});';
page += 'var ul = document.getElementById("list");';
page += 'var li = document.createElement("li");';
page += 'li.className="list-group-item";';
page += 'li.appendChild(document.createTextNode(event.data));';
page += 'ul.appendChild(li);';
page += '};';
page += 'setTimeout(function() { ws.send("Hello to Espruino!");ws.send(JSON.stringify({browser:95})); }, 1000);';
page += '},1000);</script></body></html>';
function onPageRequest(req, res) {
res.writeHead(200, {
'Content-Type' : 'text/html'
});
res.end(page);
}
var server = require('ws').createServer(onPageRequest);
server.listen(80);
server.on("websocket", function (ws) {
ws.on('message', function (msg) {
console.log({
ws : msg
});
if (msg % 2 === 0)
ws.send(msg + ' is multiple of two');
});
ws.send("Hello from Espruino!");
ws.send(JSON.stringify({
date : Date.now()
}));
});
Start a browser at your Eps8266 address and see:
If you click the button, you can see the event appear in the Web IDE console. Every 2nd click causes the server to send back to the browser.... two way socket!
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
I've written a crypto module to use on boards without the crypto module in firmware - it implements the SHA1 used by the web sockets module. The ws module does not need to be modified.
For testing if the crypto.js file is copied down to a web ide project it can be tested.
The following code assumes the ESP8266 has a wifi.save and is connected to a network.
Start a browser at your Eps8266 address and see:
If you click the button, you can see the event appear in the Web IDE console. Every 2nd click causes the server to send back to the browser.... two way socket!
https://github.com/wilberforce/EspruinoDocs/blob/master/modules/crypto.js
For clarity, this the code that gets sent to the browser, using a CDN to get the bootstrap css:
2 Attachments