1

、Javascript APIを使用しWebsync3、1 つのページで約 9 つの異なるチャンネルを購読しています。Firefox と Chrome では問題ありませんが、IE9 では という警告エラーがスローされますThe request is too large for IE to process properly
残念ながら、インターネットにはこれに関する情報がほとんどまたはまったくありません。では、これを改善する方法について手がかりを持っている人はいますか?

    var client = fm.websync.client;

    client.initialize({ 
        key: '********-****-****-****-************'
    });

    client.connect({
        autoDisconnect: true,
        onStreamFailure: function(args){
            alert("Stream failure");
        },
        stayConnected: true
    });

    client.subscribe({
        channel: '/channel',
        onSuccess: function(args) {
            alert("Successfully connected to stream");
        },

        onFailure: function(args){
            alert("Failed to connect to stream");
        },

        onSubscribersChange: function(args) {
            var change = args.change;
            for (var i = 0; i < change.clients.length; i++) {
                var changeClient = change.clients[i];

                // If someone subscribes to the channel
                if(change.type == 'subscribe') {

                // If something unsubscribes to the channel
                }else{

                }
            }
        },

        onReceive: function(args){
            text = args.data.text;
            text = text.split("=");
            text = text[1];
            if(text != "status" && text != "dummytext"){
                //receiveUpdates(id, serial_number, args.data.text);
            var update = eval('(' + args.data.text + ')');

    }
    }
});
4

2 に答える 2

3

このエラーは、WebSync が転送に JSON-P プロトコルを使用している場合に発生します。これは主に IE のクロスドメイン環境専用です。つまり、websync は、Web ページが提供されているドメインとは異なるドメインにあります。そのため、IE はセキュリティ上の理由から定期的な XHR リクエストを行いたくないのです。

JSON-P は基本的に、サーバーへの通常のリクエストに付加される URL エンコード文字列として、アップストリーム データ (9 つのチャネル サブスクリプション) をエンコードします。サーバーは、その URL エンコードされた文字列を解釈し、ページによって実行される JavaScript ブロックとして応答を返すことになっています。

これは問題なく動作しますが、IE には HTTP リクエストの全体的なリクエスト URL が約 2kb に制限されている点が異なります。そのため、WebSync への 1 つの要求にあまりにも多くを詰め込むと、この 2kb のアップストリーム制限を超える可能性があります。

最も簡単な解決策は、WebSync リクエストを小さな断片に分割する (つまり、JavaScript で一度に少数のチャネルのみをサブスクライブする) か、1 つの「マスター チャネル」にサブスクライブしてから、それを監視する WebSync BeforeSubscribe イベントをプログラムすることです。チャンネルを登録し、購読チャンネル リストを書き直します。

上記のサンプルソースにキーがあるため、WebSyncオンデマンドを使用しているのではないかと思いますか? その場合、BeforeSubscribe イベント ハンドラーを作成する唯一の方法は、WebSync プロキシを作成することです。

于 2012-11-22T05:10:36.723 に答える
1

現時点では、他の誰もがこの質問に困惑しているのでPHPJavascriptブラウザがInternet Destroyer(ええと、つまりInternet Explorer. 将来的に解決策が見つかるかもしれませんが。

于 2012-10-26T20:12:54.613 に答える