1

サーバーのクラッシュまたは断続的なネットワーク障害の後、Atmosphere Web ソケット クライアントはサーバーに再接続してメッセージを受信できます。ただし、大気ロングポーリング クライアント (IE8) は再接続に失敗します。

私のアプリは、トピックをサブスクライブし、すべてのアプリケーション イベントを表示するライブ イベント ブラウザーです。Chrome と Firefox はうまく機能していますが、残念ながら IE8 をサポートする必要があるため、WebSocket とロング ポーリング間で一貫した動作を行うことが重要です。ここで何が欠けていますか?これは大気バグですか??

再現方法

  1. 雰囲気チャットの例 v2.0.3 をダウンロード http://search.maven.org/#artifactdetails%7Corg.atmosphere.samples%7Catmosphere-chat%7C2.0.0%7Cwar

  2. ロングポーリングを使用し、5 秒間隔で永久に再接続するように application.js を変更します。

    transport: 'long-polling'
    再接続: true,
    maxReconnectOnClose: Number.MAX_VALUE

  3. Tomcat サーバーを起動してチャットを開始する

  4. Tomcat を突然停止する
  5. Tomcatを起動
  6. 別のブラウザを開き、メッセージを送信します。
  7. 元のブラウザはメッセージを受信しません。

[ロングポーリング: 動作しない]

onOpen called with {"url":"http://localhost:8080/atmosphere-chat/chat","contentType":"application/json","logLevel":"debug","transport":"long-polling","trackMessageLength":true,"reconnect":true,"maxReconnectOnClose":1.7976931348623157e+308,"reconnectInterval":5000,"enableXDR":true,"fallbackTransport":"long-polling"} atmosphere.js:2801
onMessage called. {"message":"Chrome","author":"Chrome","time":1381083093440} atmosphere.js:2801
onMessage called. {"message":"Hello","author":"Chrome","time":1381083099605} atmosphere.js:2801
<< Server Crashed>>
POST http://localhost:8080/atmosphere-chat/chat?X-Atmosphere-tracking-id=0cbdf60…sport=polling&X-Cache-Date=0&Content-Type=application/json&_=1381083105434  atmosphere.js:1750
_executeRequest atmosphere.js:1750
_pushAjaxMessage atmosphere.js:2197
_push atmosphere.js:2143
push atmosphere.js:2511
request.onClose application.js:111
_f atmosphere.js:2405
_invokeFunction atmosphere.js:2361
_invokeCallback atmosphere.js:2455
_invokeClose atmosphere.js:2417
_executeRequest.ajaxRequest.onabort atmosphere.js:1593
_clearState atmosphere.js:344
_executeRequest.ajaxRequest.onreadystatechange atmosphere.js:1652
Unable to connect to http://localhost:8080/atmosphere-chat/chat atmosphere.js:2801
GET http://localhost:8080/atmosphere-chat/chat?X-Atmosphere-tracking-id=0cbdf60…-Date=0&Content-Type=application/json&X-atmo-protocol=true&_=1381083099613  atmosphere.js:1750
_executeRequest atmosphere.js:1750
_reconnect atmosphere.js:1840
_executeRequest.ajaxRequest.onreadystatechange atmosphere.js:1735
<< Never Retries>>

[Web ソケット: 動作中]

Invoking executeWebSocket atmosphere.js:2801
Using URL: ws://localhost:8080/atmosphere-chat/chat?X-Atmosphere-tracking-id=0&X-Atmosphere-Framework=2.0.3-javascript&X-Atmosphere-Transport=websocket&X-Atmosphere-TrackMessageSize=true&X-Cache-Date=0&Content-Type=application/json&X-atmo-protocol=true atmosphere.js:2801
Websocket successfully opened atmosphere.js:2801
onOpen called with with {"url":"http://localhost:8080/atmosphere-chat/chat","contentType":"application/json","logLevel":"debug","transport":"websocket","trackMessageLength":true,"reconnect":true,"maxReconnectOnClose":1.7976931348623157e+308,"reconnectInterval":5000,"enableXDR":true,"fallbackTransport":"long-polling"} atmosphere.js:2801
onMessage called. {"message":"Chrome","author":"Chrome","time":1381082675245} atmosphere.js:2801
onMessage called. {"message":"hello","author":"Chrome","time":1381082685115} atmosphere.js:2801
<< server crashed>>
WebSocket is already in CLOSING or CLOSED state. atmosphere.js:2296
Invoking executeWebSocket atmosphere.js:2801
Using URL: ws://localhost:8080/atmosphere-chat/chat?X-Atmosphere-tracking-id=3764cd2f-6338-4478-bf35-b9f5fa105c7e&X-Atmosphere-Framework=2.0.3-javascript&X-Atmosphere-Transport=websocket&X-Atmosphere-TrackMessageSize=true&X-Cache-Date=1381082719622&Content-Type=application/json&X-atmo-protocol=true atmosphere.js:2801
Invoking executeWebSocket atmosphere.js:2801
Using URL: ws://localhost:8080/atmosphere-chat/chat?X-Atmosphere-tracking-id=3764cd2f-6338-4478-bf35-b9f5fa105c7e&X-Atmosphere-Framework=2.0.3-javascript&X-Atmosphere-Transport=websocket&X-Atmosphere-TrackMessageSize=true&X-Cache-Date=1381082726651&Content-Type=application/json&X-atmo-protocol=true atmosphere.js:2801
Invoking executeWebSocket atmosphere.js:2801
Using URL: ws://localhost:8080/atmosphere-chat/chat?X-Atmosphere-tracking-id=3764cd2f-6338-4478-bf35-b9f5fa105c7e&X-Atmosphere-Framework=2.0.3-javascript&X-Atmosphere-Transport=websocket&X-Atmosphere-TrackMessageSize=true&X-Cache-Date=1381082733654&Content-Type=application/json&X-atmo-protocol=true atmosphere.js:2801
Invoking executeWebSocket atmosphere.js:2801
Using URL: ws://localhost:8080/atmosphere-chat/chat?X-Atmosphere-tracking-id=3764cd2f-6338-4478-bf35-b9f5fa105c7e&X-Atmosphere-Framework=2.0.3-javascript&X-Atmosphere-Transport=websocket&X-Atmosphere-TrackMessageSize=true&X-Cache-Date=1381082740657&Content-Type=application/json&X-atmo-protocol=true atmosphere.js:2801
<< server Restarted>>
Websocket successfully opened atmosphere.js:2801
onMessage called. {"message":"IE10","author":"IE10","time":1381082755699} 

ありがとう!

4

0 に答える 0