所以我试图通过端口80运行所有内容(提供网页并运行socket.io)。
我在端口8000上监听Apache2
我有socket.io监听端口8001
(Ubuntu 14.04)
用户通过端口80连接到我的网站。
这是我的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);
});
});
使用:node server.js
这是我的“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);
使用:sudo node proxy.js
我的网站通过端口80上的代理服务正常。
Socket.io无效。看起来它正试图在Firebug中进行民意调查。
这是我的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>
我设置时工作正常:
var socket = io.connect('http://www.mysite.me:8001');
我已经在这几个小时了!