chatのコントローラーをmain.jsに書きたくない!

require時にsocket.ioを渡してあげれば実行される。

#main.js

const server = app.listen(app.get('port'), () => {
  log.console(
    log.types.Info,
    `AppServer running at http://localhost:${app.get('port')}`
  );
});

// WebSocket Setting
const io = require('socket.io')(server);
require('./controllers/chatController')(io);

module.exportsで指定した引数に渡されて処理される。

#chatController.js

module.exports = io => {
  io.on('connection', client => {
    console.log('[CHAT INFO] new connection');

    client.on('disconnect', () => {
      console.log('[CHAT INFO] user disconnected');
    });

    client.on('message', () => {
      io.emit('message', {
        content: 'Hello'
      });
    });
  });
};

 

特にmain.jsからの呼び出しは無いので、main.jsではconstを利用して代入していない。