0

私はジャガーノートでリアルタイム通知機能を開発しています


ご存知のように、クライアントが接続しようとすると、juggernautはパブリックディレクトリにあるファイルを提供します。したがって、処理は次のようになります。

(1)ブラウザが8080ポート(ジャガーノートリスニングポート)
を接続します。(2)ジャガーノートが接続要求を取得し、ソケット接続が完了します。
(3)juggernautはそのパブリックディレクトリであるクライアントhtmlファイルを送信します。
(4)ブラウザはjuggernautからhtmlおよびjsファイルを取得し、juggernautとの通信を開始します。
それは私のサーバーでうまく機能します。これはLinuxコンソールです。

[jinbom@localhost gojug]# juggernaut
2 Sep 17:38:53 - socket.io ready - accepting connections
2 Sep 17:38:57 - Serving / - OK
2 Sep 17:38:57 - Serving /json.js - OK
2 Sep 17:38:57 - Serving /juggernaut.js - OK
2 Sep 17:38:57 - Serving /socket_io.js - OK
2 Sep 17:38:57 - Serving /WebSocketMain.swf - OK


ブラウザで接続結果を確認できます。
ここに画像の説明を入力してください
しかし、私はjuggernautからhtmlファイルとjsファイルを取得したくありません。これは、Webサーバーがあり、ファイルをphpプロジェクトファイルと統合したいことを意味します。
メインページに、関係するジャガーノート(接続を含む)コードを挿入しました。これは私のmain.phpページスニペットです

<script src="http://myhost.org/json.js" type="text/javascript" charset="utf-8"></script>
  <script src="http://myhost.org/socket_io.js" type="text/javascript" charset="utf-8"></script>
  <script src="http://myhost.org/juggernaut.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
    var logElement = document.getElementById("log");
    logElement.value = "";
    var log = function(data){
      logElement.value += (data + "\n");
    };

    var jug = new Juggernaut({
      secure: ('https:' == document.location.protocol),
      host: document.location.hostname,
      port: document.location.port || 80
    });

    jug.on("connect", function(){ log("Connected") });
    jug.on("disconnect", function(){ log("Disconnected") });
    jug.on("reconnect", function(){ log("Reconnecting") });

    log("Subscribing to channel1");

    jug.subscribe("channel1", function(data){
      log("Got data: " + data);
    });

    // Expose for debugging
    window.jug = jug;
  </script>

juggernautのパブリックディレクトリファイルをクライアントのphpファイルに統合するだけです。

これを行おうとすると、ブラウザがジャガーノートに接続できません。socket.ioエラーだと思います。(Firebugコンソール)

"NetworkError: 404 Not Found - http://myhost.org:8080/socket.io/1/?t=1314949832960&jsonp=0"

これは間違っていますか?だから私はそれらをjuggernautのパブリックディレクトリに置き、juggernautからそれらを取得する必要がありますか?

4

1 に答える 1

0

私はこの問題を自分で解決しました。

このようにjavascriptパスを修正しました、

オリジナル :

<script src="http://myhost.org/socket_io.js" type="text/javascript" charset="utf-8"></script>
<script src="http://myhost.org/juggernaut.js" type="text/javascript" charset="utf-8"></script>

修繕 :

<script src="http://myhost.org:8080/socket_io.js" type="text/javascript" charset="utf-8"></script>
<script src="http://myhost.org:8080/juggernaut.js" type="text/javascript" charset="utf-8"></script>

それでも、この修正によりこの問題が解決する理由がわかりません。とにかくうまくいきます〜^^; この助けを願っています。

于 2011-09-02T09:05:30.250 に答える