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

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

1 голос
/ 02 января 2012

Я использую экспресс-веб-приложение на порту 3030, но оно проксируется через 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 никогда не отображается на стороне клиента или сервера.Что я делаю не так?

РЕДАКТИРОВАТЬ - Добавлен 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);

Ответы [ 2 ]

1 голос
/ 02 января 2012

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

0 голосов
/ 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')
    });
});

Я думаю ...

...