1

我在端口 3030 上运行一个快速 Web 应用程序,但它是通过http-proxy 代理的。该站点以这种方式运行良好,但 socket.io 将无法连接。当我的控制台显示时,它确实收到了一些东西:

debug - served static content /socket.io.js
debug - client authorized
info  - handshake authorized 11319742841450363586
debug - setting request GET /socket.io/1/websocket/11319742841450363586
debug - set heartbeat interval for client 11319742841450363586
debug - client authorized for 
debug - websocket writing 1::

应用程序.js

app.listen(3030)

io = require('socket.io')
socket = io.listen(app)

socket.on('connection', function(client) {
  console.log('new connection')
})

聊天.js

$(function() {
  console.log('connecting to chat...')
  var socket = io.connect('http://mydomain.com:80')

  socket.on('connected',function(){
    console.log('connected')
  })
})

但是,console.log 语句都不会显示在客户端或服务器端。我究竟做错了什么?

编辑 - 添加了 http-proxy 代码

var httpProxy = require('http-proxy')
  , proxyTable = {
      router: {
        'lou.mydomain.com': '127.0.0.1:3030'
      , 'foe.mydomain.com': '127.0.0.1:3000'
      // and some others
      }
    }
  , proxyServer = httpProxy.createServer(proxyTable);

proxyServer.listen(80);
4

2 回答 2

1

据我所知,node-http-proxy 不能与 Node > 0.6.x 的 WebSockets 一起使用,因为存在一个错误(这是几周前的事)。他们说他们正在努力解决这个问题,所以他们可能还没有解决这个问题。如果你不能让它工作,试试bouncy

于 2012-01-02T12:43:20.403 回答
0

你不应该在地址 127.0.0.1:3030 上请求 socket.io 吗?并连接到 mydomain.com:3030。

如果我理解正确,您在 3030 端口上运行 express 应用程序,因此您需要在客户端 JS 中连接到那里。

$(function() {
    console.log('connecting to chat...')
    var socket = io.connect('http://mydomain.com:3030');

    socket.on('connected',function(){
    console.log('connected')
    });
});

我猜...

于 2012-01-02T12:57:43.920 回答