I'm trying to follow the instructions here
However, I seem too dumb to understand why I cannot reference socket.io.jss on the client side. I've read similar posts here but they don't seem right: NodeJS Express not serving '/socket.io/socket.io.js'
Here's the full app listing:
var application_root = __dirname,
express = require('express'),
//Web framework
path = require('path'),
//Utilities for dealing with file paths
pg = require('pg'); //Postgres integration
//Create server
var app = express();
// Configure server
app.configure(function () {
//parses request body and populates request.body
app.use(express.bodyParser());
//checks request.body for HTTP method overrides
app.use(express.methodOverride());
//perform route lookup based on url and HTTP method
app.use(app.router);
//Where to serve static content
app.use(express.static(path.join(application_root, 'public')));
//Show all errors in development
app.use(express.errorHandler({
dumpExceptions: true,
showStack: true
}));
});
//Start server
var port = 4711;
app.listen(port, function () {
console.log('Express server listening on port %d in %s mode', port, app.settings.env);
});
//Start socket.io
var server = require('http').createServer(app),
io = require('socket.io').listen(server);
Now if I try to reference the client-side js, I get a 404.
<script src="/socket.io/socket.io.js"></script>
Anyone know why Express 3 is not allowing socket.io to serve its client lib?
I found the answer here
Socket.io is not served in /socket.io/socket.io.js
Read through http://expressjs.com/api.html#app.listen, note how app.listen is defined.
In short: replace app.listen with server.listen.