So I'm trying to run everything (serve web pages and run socket.io) over port 80.
I have Apache2 listening on port 8000
I have socket.io listening on port 8001
(Ubuntu 14.04)
Users connect to my site over port 80.
Here's my socket.io "server.js":
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
server.listen(8001);
io.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
Run with: node server.js
Here's my "proxy.js":
var httpProxy=require('http-proxy');
var proxy=httpProxy.createProxy();
var options = {
'mysite.me': 'http://127.0.0.1:8000',
'mysite.me/socket.io/': 'http://127.0.0.1:8001',
'www.mysite.me': 'http://127.0.0.1:8000',
'www.mysite.me/socket.io/': 'http://127.0.0.1:8001'
};
require('http').createServer(function(req, res) {
proxy.web(req, res, {
target: options[req.headers.host],
ws : true
});
}).listen(80);
Run with: sudo node proxy.js
My website is being served up fine through the proxy over port 80.
Socket.io is not working. It looks like it's trying to poll in Firebug.
Here's my index.html:
<script src="./lib/socket.io/socket.io-1.1.0.js"></script>
<script>
$(document).ready(function(){
var socket = io.connect('http://www.mysite.me:80');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
});
</script>
It works fine when I set:
var socket = io.connect('http://www.mysite.me:8001');
I've been at this for hours!