0

Atmosphere を現在のアプリケーションに統合しています。IE 11 と最新バージョンの Chrome では、すべてがうまく機能します。ただし、IE 10 では、クライアントがサーバーに対して AJAX 呼び出しを行った後、プッシュ通知を受け取ることができません。

Atmosphere デバッグをオンにしました。これが IE 10 のログです。

executeWebSocket の呼び出し

URL の使用: ws://t1c.lh.com:8080/wicket/page?12-IResourceListener.9-&X-Atmosphere-tracking-id=0&X-Atmosphere-Framework=2.0.8-jquery&X.....

Websocket が正常に開かれました

1 つのグローバル コールバックの呼び出し: 開始

....既存の AJAX リクエストを行います.....

1 つのグローバル コールバックの呼び出し: 登録解除

Websocket は正常に閉じられました

登録解除の呼び出し後、クライアントはサーバー プッシュ イベントを受信しなくなります。この登録解除の呼び出しは IE 11 では発生しません。IE 11 はプッシュ通知を問題なく受信します。

修正方法に関するアイデアはありますか?

これが私たちの雰囲気設定です。Tomcat 8.0.23 を使用。

<servlet>
    <description>Atmospherefilter</description>
    <servlet-name>Atmospherefilter</servlet-name>
    <servlet-class>org.atmosphere.cpr.AtmosphereServlet</servlet-class>
    <init-param>
        <param-name>applicationClassName</param-name>
        <param-value>AppClassHere</param-value>
    </init-param>
    <init-param>
        <param-name>configuration</param-name>
        <param-value>development</param-value>
    </init-param>
    <init-param>
        <param-name>org.atmosphere.useWebSocket</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>org.atmosphere.useNative</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>org.atmosphere.cpr.sessionSupport</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>org.atmosphere.websocket.maxIdleTime</param-name>
        <param-value>60000</param-value>
    </init-param>
    <init-param>
       <param-name>org.atmosphere.useWebSocketAndServlet3</param-name>
       <param-value>true</param-value>
    </init-param>
    <init-param>
       <param-name>org.atmosphere.cpr.asyncSupport</param-name>
       <param-value>org.atmosphere.container.JSR356AsyncSupport</param-value>
    </init-param>
    <init-param>
        <param-name>org.atmosphere.cpr.broadcastFactory</param-name>
        <param-value>org.atmosphere.cpr.DefaultBroadcasterFactory</param-value>
    </init-param>
    <init-param>
        <param-name>org.atmosphere.cpr.broadcasterCacheClass</param-name>
        <param-value>org.atmosphere.cache.UUIDBroadcasterCache</param-value>
    </init-param>
    <init-param>
        <param-name>filterMappingUrlPattern</param-name>
        <param-value>/*</param-value>
    </init-param>
    <init-param>
        <param-name>org.atmosphere.websocket.WebSocketProtocol</param-name>
        <param-value>org.atmosphere.websocket.protocol.EchoProtocol</param-value>
    </init-param>
    <init-param>
        <param-name>org.atmosphere.cpr.broadcastFilterClasses</param-name>
        <param-value>org.apache.wicket.atmosphere.TrackMessageSizeFilter</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
    <async-supported>true</async-supported>
</servlet>
<servlet-mapping>
    <servlet-name>Atmospherefilter</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

ありがとう、マット

4

2 に答える 2

1

私はそれを理解しました。IE 10 は、リンクが href="javascript:void(0);" でクリックされるとページをアンロードします。すべてのリンクにはこれ (および AJAX 呼び出しの onclick 属性) があり、onbeforeunload が実行され、大気の購読解除コードが含まれていました。

href を削除すると問題が解決することを確認しました。href="javascript:void(0);" の場合、新しいバージョンの IE と Chrome はページをアンロードしません。存在します。

参照リンク: javascript href でアンカー要素をクリックすると IE10 が beforeunload イベントを発生させる理由とそれを防ぐ方法

フォローしていただきありがとうございます。

于 2015-06-15T16:26:20.200 に答える
0

問題を再現するエンド ツー エンドのテスト ケースを共有できますか? ただし、最初に、最新バージョンの JavaScript クライアントを試してみてください。

https://github.com/Atmosphere/atmosphere-javascript

テスト ケースをメーリング リストに送信するだけです

https://groups.google.com/group/atmosphere-framework?pli=1

-- ジャンフランソワ (Atmosphere のリード)

于 2015-06-13T15:36:58.137 に答える