node.js - NodeJS Express Socket.io Impletation in a Seperate File -


i using node.js express v4 , socket.io implementing websocket.

my app.js this-

var express = require('express'); var socket_io = require( "socket.io" ); var path = require('path'); var favicon = require('serve-favicon'); //var controllers = require('./controllers'); //var middleware = require('./middleware'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieparser = require('cookie-parser'); var bodyparser = require('body-parser');  // express var app          = express();  // socket.io var io           = socket_io(); app.io           = io;  // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'hbs'); app.set('view options', { layout: false });     //disabling default layout require('./view_partials')(app);  // uncomment after placing favicon in /public app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); app.use(logger('dev')); app.use(bodyparser.json()); app.use(bodyparser.urlencoded({ extended: false })); app.use(cookieparser()); app.use(express.static(path.join(__dirname, 'public')));  require('./routes')(app);  //// socket.io server listens our app      //server - data received         // send current time connected clients         function sendtime()         {             io.emit('time', { time: new date().tojson() });         }          // send current time every 10 secs         setinterval(sendtime, 10000);      //client - data received         // emit welcome message on connection         io.on('connection', function(socket)         {             // use socket communicate particular client only, sending it's own id             socket.emit('welcome', { message: 'welcome!', id: socket.id });             socket.on('i client', console.log);         }); ////////////////////////////////////////  require('./errors')(app);  module.exports = app; 

i export code-

    //client - data received         // emit welcome message on connection         io.on('connection', function(socket)         {             // use socket communicate particular client only, sending it's own id             socket.emit('welcome', { message: 'welcome!', id: socket.id });             socket.on('i client', console.log);         }); 

to new file.

so, have done this-

client.js-

//client - data received     // emit welcome message on connection     io.on('connection', function(socket)     {         // use socket communicate particular client only, sending it's own id         socket.emit('welcome', { message: 'welcome!', id: socket.id });         socket.on('i client', console.log);     }); 

app.js-

var express = require('express'); var socket_io = require( "socket.io" ); var path = require('path'); var favicon = require('serve-favicon'); //var controllers = require('./controllers'); //var middleware = require('./middleware'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieparser = require('cookie-parser'); var bodyparser = require('body-parser');  // express var app          = express();  // socket.io var io           = socket_io(); app.io           = io;  // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'hbs'); app.set('view options', { layout: false });     //disabling default layout require('./view_partials')(app);  // uncomment after placing favicon in /public app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); app.use(logger('dev')); app.use(bodyparser.json()); app.use(bodyparser.urlencoded({ extended: false })); app.use(cookieparser()); app.use(express.static(path.join(__dirname, 'public')));  require('./routes')(app);  //// socket.io server listens our app      //server - data received         // send current time connected clients         function sendtime()         {             io.emit('time', { time: new date().tojson() });         }          // send current time every 10 secs         setinterval(sendtime, 10000);      require('./websocket/client'); ////////////////////////////////////////  require('./errors')(app);  module.exports = app; 

but is neither giving me error or not working.

can please help, how can export in separate file client , server code can separated?

my full code can found here.

thanks in advance helping.

i have solved problem. need share io variable include file.

in app.js -

require('./websocket/server')(io); 

and ./websocket/server.js -

// socket.io server listens our app module.exports = function(io) {     // send current time connected clients     function sendtime()     {         io.emit('time', { time: new date().tojson() });     }     // send current time every 10 secs     setinterval(sendtime, 10000); } 

everything working :).


Comments