io.on no es una función

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 obteniendo io.on is not a function cuando envío datos desde mi página de 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); }); }); }); 

Tu 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 enlazar escuchas a una instancia, no al manejador del módulo.


En cada ejemplo del lado del servidor de socket.io en esta página de documentos , usan uno de estos formularios:

 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 hacen:

 var io = require('socket.io`); io.listen(server); io.on('connection', ....); 

Ese es el valor incorrecto para io .


Para resumir, debe corregir 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 en el que puede configurar los controladores de eventos.

    Intereting Posts