Med knappar och sensorer för att göra musik med Intel Edison (6 / 9 steg)
Steg 6: Async-a-vad?!
För att skicka data från Edison över en socket, har vi två olika delar som måste samarbeta, båda är asynkron karaktär. För att få ett handtag på en socket, måste Socket.IO en klient för att ansluta faktiskt. Detta händer när du besöker din Edisons IP på hamn 8080, och vi servera vår "index.html" fil. Dessutom startar Cylon upp i en obestämd tid, eftersom det måste initiera olika enheter och anslutningar innan den är klar att användas. Vad vi vill göra är att starta upp Cylon när våra programservern startas, sedan initiera Socket.IO. Varje gång Socket.IO får en anslutning, måste vi lägga till en callback i vår knapp att avge ett socket meddelande för den specifika sockeln, varje gång knappen händelserna eldas. Vi kommer att behöva refactor några av våra befintliga koden. Ersätta innehållet i "app.js" med följande kod.
var uttryckliga = require('express')
var app = express()
var server = require('http'). Server(app)
var io = require('socket.io')(server)
var cylon = require('cylon')
app.use (express.static (__dirname + '/ offentliga'))
Server.listen(8080)
Detta kommer att kallas när Cylon fullt initieras, som när vi öppnar vår WebSocket anslutning.
var cylonReady = function(my) {
IO
.of('/soundsocket')
.på ("anslutning", funktion (socket) {
registerSocketHandlers (min, socket);
})
}
Detta kommer att kallas varje gång en socket öppnas, så varje kund kommer att få sina egna händelser när knappar skjuts.
var registerSocketHandlers = funktion (min, socket) {
My.Button.on ("push", function() {
socket.Emit ("knappen", "push")
})
My.Button.on ("release", function() {
socket.Emit ("knappen", "release")
})
}
Cylon.robot({
anslutningar: {
Edison: {adapter: "intel-iot"}
}
enheter: {
knappen: {drivrutin: "knappen", pin: 2}
}
{}) .på ("ready", cylonReady);
Cylon.start()
Uppdatera din "index.html" för att återspegla följande förändringar:
socketConnection.on ("knappen", function(buttonState) {
Console.log (' knappen stat: ", buttonState)
})
Åta sig och driva dina ändringar. För att bevisa detta fungerar som den ska, kan du dra appen ner och köra det på din Edison och sedan ladda om sidan i din webbläsare. Om du tittar på konsolen Web inspektör, bör du se meddelanden som avges när du trycker och släpp knappen.