NodeJS, http-прокси, socket.io

Я запускаю экспресс-веб-приложение на порту 3030, но оно проксируется через https://github.com/nodejitsu/node-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::

app.js

app.listen(3030)

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

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

chat.js

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

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

Однако ни один из операторов console.log никогда не отображается ни на стороне клиента, ни на стороне сервера. Что я делаю не так?

EDIT — Добавлен код http-прокси

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);

person Pastor Bones    schedule 02.01.2012    source источник
comment
вы должны вставить код конфигурации вашего http-прокси   -  person plus-    schedule 02.01.2012
comment
@xsace - я отредактировал сообщение, включив в него скрипт http-proxy   -  person Pastor Bones    schedule 02.01.2012
comment
Я столкнулся с той же проблемой. Вы все поняли?   -  person Michal Kuklis    schedule 01.11.2012
comment
Хм, не могу вспомнить... это была проблема на стороне клиента с созданием экземпляра socket.io. Попробуйте разные комбинации параметров io.connect (порт, домен и т. д.)   -  person Pastor Bones    schedule 01.11.2012


Ответы (2)


Насколько мне известно, node-http-proxy не работает с WebSockets с Node > 0.6.x из-за ошибки (это было пару недель назад). Они сказали, что работают над исправлением, поэтому возможно, что они еще не исправили это. Если вы не можете заставить это работать, попробуйте bouncy.

person alessioalex    schedule 02.01.2012
comment
Для всех, кому интересно, проблема, упомянутая alessioalex, должна была быть исправлена ​​в socket.io 0.8.0: https://github.com/nodejitsu/node-http-proxy/issues/161 - person Clint Harris; 15.02.2012

Разве вы не должны запрашивать socket.io по адресу 127.0.0.1:3030? И подключение к mydomain.com:3030 тоже.

Если я правильно понимаю, вы запускаете экспресс-приложение на порту 3030, так что вам нужно подключиться к нему в JS на стороне клиента.

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

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

Наверное...

person devdRew    schedule 02.01.2012