1

AWS EC2 インスタンスで nodeJS + Express + socket.io + httpd アプリケーションを実行しています。

ページをロードすると、ロガーは次の情報を提供します。

GET / 200 2ms - 1.23kb
GET /javascripts/script.js 304 1ms
   debug - served static content /socket.io.js
GET /stylesheets/style.css 304 1ms
GET /stylesheets/style.css 304 1ms
GET /images/052.png 304 1ms
GET /Candara.ttf 304 1ms
   debug - client authorized
   info  - handshake authorized EgWLPeyO2uiCTSui01CP
   debug - setting request GET /socket.io/1/websocket/EgWLPeyO2uiCTSui01CP
   debug - set heartbeat interval for client EgWLPeyO2uiCTSui01CP
   warn  - websocket connection invalid
   info  - transport end (undefined)
   debug - set close timeout for client EgWLPeyO2uiCTSui01CP
   debug - cleared close timeout for client EgWLPeyO2uiCTSui01CP
   debug - cleared heartbeat interval for client EgWLPeyO2uiCTSui01CP

この時点で、物事は約 5 秒間停止し、その後:

   debug - setting request GET /socket.io/1/xhr-polling/EgWLPeyO2uiCTSui01CP?t=1376937523124
   debug - setting poll timeout
   debug - client authorized for 
   debug - clearing poll timeout
   debug - xhr-polling writing 1::
   debug - set close timeout for client EgWLPeyO2uiCTSui01CP
   debug - setting request GET /socket.io/1/xhr-polling/EgWLPeyO2uiCTSui01CP?t=1376937523490
   debug - setting poll timeout
   debug - discarding transport
   debug - cleared close timeout for client EgWLPeyO2uiCTSui01CP

この時点の後、私が知る限り、物事はうまく機能し始め、イベントは遅滞なく発生し、受信されます (上記の 5 秒の遅延の前にイベントが発生した場合、それらは遅延が完了するまで処理されません)。問題は、その 5 秒の遅延をどのように取り除くかです。

クライアント側の JS は次のようになります。

window.onload = function () {
  var socket = io.connect("http://xxx.us-west-2.compute.amazonaws.com", {resource: "/socket.io"});

サーバー側の JS は次のようになります。

var express = require('express');
var app = express();
var io = require("socket.io").listen(app.listen(3000));

私の httpd.conf ファイルは次のようになります。

ProxyPreserveHost On
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/

<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

<Location />
    allow from all
</Location>

初期遅延を回避し、socket.io への正常な接続を確立するにはどうすればよいですか?

4

1 に答える 1