javascript - Working with express.io in a separate router file -
i'm trying use router , socket.io together.
i've created separate router file , try conjunct route , socket.io
app = require('express.io')(); //var app = express(); //var router = express.router(); app.http().io(); var mysql = require('mysql'); var connection = mysql.createconnection({ host :'aaaa', port : 3306, user : 'bbbb', password : 'cccc', database:'dddd' }); connection.connect(function(err) { if (err) { console.error('mysql connection error'); console.error(err); throw err; } }); /* home page. */ app.get('/', function(req, res) { var query = connection.query('select * xe_livexe_rss limit 0,1',function(err,rows){ console.log(rows); //res.json(rows); res.render('index', { title: 'express',rss:rows }); req.io.route('ready'); }); }); app.io.route('ready', function(req,res) { req.io.emit('talk', { message: 'io event io route on server' }); }); module.exports = app;
but,,when request / router, fails following message.
typeerror: object #<object> has no method 'emit' @ object.module.exports [as ready] (/home/ubuntu/nodetest1/routes/index.js:41:12) @ manager.io.route (/home/ubuntu/nodetest1/node_modules/express.io/compiled/index.js:85:29) @ object.request.io.route (/home/ubuntu/nodetest1/node_modules/express.io/compiled/index.js:197:29) @ query._callback (/home/ubuntu/nodetest1/routes/index.js:34:10) @ query.sequence.end (/home/ubuntu/nodetest1/node_modules/mysql/lib/protocol/sequences/sequence.js:78:24) @ query._handlefinalresultpacket (/home/ubuntu/nodetest1/node_modules/mysql/lib/protocol/sequences/query.js:143:8) @ query.eofpacket (/home/ubuntu/nodetest1/node_modules/mysql/lib/protocol/sequences/query.js:127:8) @ protocol._parsepacket (/home/ubuntu/nodetest1/node_modules/mysql/lib/protocol/protocol.js:213:24) @ parser.write (/home/ubuntu/nodetest1/node_modules/mysql/lib/protocol/parser.js:62:12) @ protocol.write (/home/ubuntu/nodetest1/node_modules/mysql/lib/protocol/protocol.js:37:16)
just wonder have missed...
by error message, can callback fucntion ready
not receiving socketrequest
object , gives access requestio
object has event trying access emit(event, data)
.
i guess code has bug higlited below:
/* home page. */ app.get('/', function(req, res) { var query = connection.query('select * xe_livexe_rss limit 0,1',function(err,rows){ console.log(rows); //res.json(rows); res.render('index', { title: 'express',rss:rows }); req.io.route('ready'); // <== //when event invoked there no req/res object passed `ready` event. //this has invoked client script. //emit ready event. /* `io.emit('ready')`; */ <== clientpage.html }); });
i have following code working:
app = require('express.io')(); app.http().io(); // setup ready route, , emit talk event. app.io.route('ready', function(req) { req.io.emit('talk', { message: 'io event io route on server' }) }); // send client html. app.get('/', function(req, res) { res.sendfile(__dirname + '/client.html') }); app.listen(7076);
Comments
Post a Comment