1

ポート 3030 で Express 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::

app.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のWebSocketでは機能しません(これは数週間前のことです)。彼らは修正に取り組んでいると言ったので、まだ修正していない可能性があります。それがうまくいかない場合は、弾むようにしてください。

于 2012-01-02T12:43:20.403 に答える
0

アドレス 127.0.0.1:3030 で socket.io を要求すべきではありませんか? また、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')
    });
});

私は推測する...

于 2012-01-02T12:57:43.920 に答える