2012-01-02 2 views
1

Я запускаю экспресс-приложение на порт 3030, но оно проксировано через http-proxy. Сайт отлично работает, но socket.io не будет подключаться. Это Получать что-то в моих консольных дисплеях:NodeJS, 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); 
+0

вы должны вставить код вашего HTTP-прокси конфигурации –

+0

@xsace - Я редактировал пост, чтобы включить HTTP-прокси скрипт –

+0

я бегу в том же номере. Вы все это поняли? –

ответ

1

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

+2

Для кого-то, кто задается вопросом, упомянутая проблема alessioalex должна быть исправлена ​​в socket.io 0.8.0: https://github.com/nodejitsu/node -http-proxy/issues/161 –

0

Не следует ли запрашивать 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') 
    }); 
}); 

Я думаю ...

+0

Он подключен к порту 80, поэтому его код верен. – alessioalex