サーバーのクラッシュまたは断続的なネットワーク障害の後、Atmosphere Web ソケット クライアントはサーバーに再接続してメッセージを受信できます。ただし、大気ロングポーリング クライアント (IE8) は再接続に失敗します。
私のアプリは、トピックをサブスクライブし、すべてのアプリケーション イベントを表示するライブ イベント ブラウザーです。Chrome と Firefox はうまく機能していますが、残念ながら IE8 をサポートする必要があるため、WebSocket とロング ポーリング間で一貫した動作を行うことが重要です。ここで何が欠けていますか?これは大気バグですか??
再現方法
雰囲気チャットの例 v2.0.3 をダウンロード http://search.maven.org/#artifactdetails%7Corg.atmosphere.samples%7Catmosphere-chat%7C2.0.0%7Cwar
ロングポーリングを使用し、5 秒間隔で永久に再接続するように application.js を変更します。
transport: 'long-polling'
再接続: true,
maxReconnectOnClose: Number.MAX_VALUETomcat サーバーを起動してチャットを開始する
- Tomcat を突然停止する
- Tomcatを起動
- 別のブラウザを開き、メッセージを送信します。
- 元のブラウザはメッセージを受信しません。
[ロングポーリング: 動作しない]
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}
ありがとう!