I have my app.js set up like this:
app.js
var express = require('express');
var socket_io = require("socket.io");
var app = express();
//Our route variables.
var routes = require('./routes/index');
var users = require('./routes/users');
var work = require('./routes/work');
// Socket.io
var io = socket_io();
app.io = io;
var playground = require('./routes/playground')(io);
//CODE I WANT MOVED TO playground.js!
//Socket IO playground
io.on('connection', function(socket) {
console.log('a user connected');
socket.on('chat message', function(msg) {
io.emit('chat message', {
message: msg.message,
nickname: msg.nickname
});
});
socket.on('disconnect', function() {
console.log('a user disconnected');
});
});
I was told I could send .io to my route playground.js like this:
var playground = require('./routes/playground')(io);
However I get the following error cannot call method of 'IndexOf' undefined
I do not want my socket.io code to be in app,js because I don't want app.js to become messy. (The code will grow overtime) I only want to use socket.io in playground.js because all of my test apps will be there. Please let me know if I can make this more clear
playground.js
var express = require('express');
var router = express.Router();
module.exports = function(io) {
io.on('connection', function(socket) {
console.log("connection made!");
});
};
router.get('/', function(req, res, next) {
res.render('playground');
});
module.exports = router;