Spaces:
Running
Running
var WebSocketServer = require('ws').Server; | |
const PORT = 8888; | |
var wss = new WebSocketServer({port: PORT}); | |
var connections = []; | |
console.log("Starting ml2scratch 0.0.1..."); | |
console.log(""); | |
console.log("Ctrl+C to stop"); | |
console.log(""); | |
console.log("Setup"); | |
console.log("1. Open https://champierre.github.io/ml2scratch/"); | |
console.log("2. Open https://scratchx.org/?url=https://champierre.github.io/ml2scratch/ml2scratch.js"); | |
console.log(""); | |
wss.on('connection', function(ws, req) { | |
if (req.url == '/ml') { | |
console.log('Machine Learning client is connected.'); | |
} else if (req.url == '/scratchx') { | |
console.log('ScratchX extension is connected.'); | |
} | |
connections.push(ws); | |
ws.on('close', function() { | |
console.log('Connection is closed.'); | |
connections = connections.filter(function (conn, i) { | |
return (conn === ws) ? false : true; | |
}); | |
}); | |
ws.on('message', function(json) { | |
console.log("Received " + json); | |
data = JSON.parse(json); | |
if (data.action == 'predict') { | |
if (connections) { | |
connections.forEach(function (conn, i) { | |
conn.send(JSON.stringify({action: 'predict', value: data.value, label: data.label})); | |
}); | |
} | |
} | |
}); | |
ws.on('error', function(e) { | |
console.log(e); | |
}); | |
}); | |