sto cercando di condividere socket.io
s' presa oggetto in diversi moduli Node.JS anche se non riesco e ottenere l'oggetto vuoto concondivisione socket.io ad altri moduli dà oggetto vuoto
Cannot call method 'on' of undefined
Il mio codice:
app.js
var express = require('express')
, app = express();
var server = require('http').createServer(app)
, io = require('socket.io').listen(server)
var routes = require('./routes')
, path = require('path')
, rss = require('./routes/rss')
// ...
exports.io = io;
circuiti/rss.js
io = require(__dirname + '/../app');
console.log(io);
io.sockets.on('connection', function(
console.log("Connection on socket.io on socket");
// .. do stuff
});
Questo è l'uscita che ricevo da questo: Anche se ho provato e posso fare lo stesso con socket.io
solo in uno (app.js) il file
$ node app.js
info - socket.io started
{}
/home/XXX/programming/nodejs/node-express-aws/routes/rss.js:10
io.sockets.on('connection', function(socket){
^
TypeError: Cannot call method 'on' of undefined
at Object.<anonymous> (/home/XXX/programming/nodejs/node-express-aws/routes/rss.js:10:12)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/home/XXX/programming/nodejs/node-express-aws/app.js:9:10)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
var express = require('express')
, app = express();
var server = require('http').createServer(app)
, io = require('socket.io').listen(server)
var routes = require('./routes')
, path = require('path')
, rss = require('./routes/rss')
// ...
io.sockets.on('connection', function(socket){
logger.debug("Connection on socket.io on socket");
socket.emit('news', {will: 'be recived'});
});
Utilizzando questo metodo io a volte ottenere 'TypeError: Impossibile chiamare il metodo 'emettere' di undefined' durante il tentativo di utilizzare socketio oggetto come globale: 'var socketio; module.exports = function (io) {io.socket.on ('connection', function (socket) {socketio = socket;}); 'e quindi usarlo da qualche parte nel codice; – Patryk
Imposta una variabile di primo livello denominata 'socketio' che si riferisce alla persona che ha effettuato l'ultima connessione all'app. Se nessuno è connesso, sarà 'indefinito'. –