javascript - notificaciones - node js tiempo real
io.on no es una funciĆ³n (1)
Su valor de io
no es lo que debería ser.
La forma habitual de hacer las cosas es así:
var app = require(''http'').createServer(handler)
var io = require(''socket.io'')(app);
var fs = require(''fs'');
app.listen(80);
io.on(''connect'', ...);
Pero supongo que tu valor de io
es algo como esto:
var io = require(''socket.io'');
Eso no es lo mismo. Ese es el mango del módulo. Pero, cuando lo haces de esta manera:
var io = require(''socket.io'')(app);
Entonces, io
es una instancia de socket.io. Puede vincular oyentes a una instancia, no al identificador del módulo.
En cada ejemplo del lado del servidor socket.io en esta página de documento , usan una de estas formas:
var io = require(''socket.io'')(app);
var io = require(''socket.io'')(port);
var io = require(''socket.io'')(server);
con este:
io.on(''connection'', ....);
En ninguna parte lo hacen:
var io = require(''socket.io`);
io.listen(server);
io.on(''connection'', ....);
Ese es el valor equivocado para io
.
Larga historia, acortada, debe arreglar lo que asigna a io
para que sea coherente con los documentos. Es el valor de retorno de require(''socket.io'')(app);
eso le da un objeto de instancia socket.io que luego puede configurar controladores de evento.
Tengo este código funcionando para recibir datos de mi Arduino, pero me gustaría enviar datos a mi Arduino y obtener una respuesta en mi página de cliente. io.on is not a function
escucha, pero sigo recibiendo io.on is not a function
cuando envío datos desde la página de mi cliente.
test.js
io.listen(app.listen(3000)).on(''connection'', function (client) {
// store client into array
clients.push(client);
// on disconnect
client.on(''disconnect'', function() {
// remove client from array
clients.splice(clients.indexOf(client), 1);
});
// I added this to listen for event from my chart.JS
io.on(''connection'', function(socket){
socket.on(''LED on'', function (data) {
console.log(data);
});
socket.on(''LED off'', function (data) {
console.log(data);
});
});
});