मैं अलग Node.js मॉड्यूल में socket.io
के सॉकेट वस्तु का हिस्सा हालांकि मैं असफल और साथ खाली वस्तु पाने के लिए कोशिश कर रहा हूँ देता हैशेयरिंग अन्य मॉड्यूल के लिए socket.io खाली ऑब्जेक्ट
Cannot call method 'on' of undefined
मेरे कोड:
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;
मार्गों/rss.js
io = require(__dirname + '/../app');
console.log(io);
io.sockets.on('connection', function(
console.log("Connection on socket.io on socket");
// .. do stuff
});
उत्पादन है कि मैं इस से मिलता है:
$ 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)
हालांकि मैं कोशिश की है और मैं socket.io
केवल एक में (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')
// ...
io.sockets.on('connection', function(socket){
logger.debug("Connection on socket.io on socket");
socket.emit('news', {will: 'be recived'});
});
मैं कभी कभी 'मिल जाएगा लेखन त्रुटि::
./routes/socket.js निम्न होना चाहिए विधि कॉल नहीं कर सकता undefined' की 'फेंकना' socketio वस्तु का उपयोग करने का प्रयास करते समय वैश्विक एक के रूप में: 'var सॉकेटियो; module.exports = फ़ंक्शन (io) {io.socket।चालू ('कनेक्शन', फ़ंक्शन (सॉकेट) {सॉकेटियो = सॉकेट;}); और फिर कोड में कहीं भी इसका उपयोग करें; – Patryk
यह 'सॉकेटियो' नामक एक शीर्ष-स्तरीय चर सेट करता है जो उस व्यक्ति को संदर्भित करता है जो हाल ही में ऐप से जुड़ा हुआ है। यदि कोई भी कनेक्ट नहीं हुआ है, तो यह 'अपरिभाषित' होगा। –