设置socket.io

时间:2014-09-06 16:05:43

标签: node.js proxy websocket socket.io

所以我试图通过端口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');

我已经在这几个小时了!

0 个答案:

没有答案