1

我正在使用Websync3Javascript API,并在一页上订阅大约 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 与您的网页所在的域不同。因此,出于安全原因,IE 不想定期发出 XHR 请求。

JSON-P 基本上将上游数据(您的 9 个频道订阅)编码为 URL 编码字符串,该字符串附加到对服务器的常规请求中。服务器应该解释该 URL 编码的字符串并将响应作为由页面执行的 JavaScript 块发回。

这很好用,除了 IE 对大约 2kb 的 HTTP 请求的整体请求 URL 也有限制。因此,如果您将太多内容打包到对 WebSync 的单个请求中,您可能会超过这个 2kb 的上游限制。

最简单的解决方案是将您的 WebSync 请求分成小块(即:在 JavaScript 中一次只订阅几个频道),或者订阅一个“主频道”,然后编写一个 WebSync BeforeSubscribe 事件来监视它频道并重写订阅频道列表。

我怀疑因为您在上面的示例源中有一个密钥,所以您正在使用 WebSync On-Demand?如果是这种情况,制作 BeforeSubscribe 事件处理程序的唯一方法是创建 WebSync 代理。

于 2012-11-22T05:10:36.723 回答
1

所以目前,由于其他人也被这个问题难住了,我设置了一个陷阱,如果浏览器是(呃,我的意思是),我PHP什至不加载这个Javascript脚本。不过,也许将来会有解决方案。Internet DestroyerInternet Explorer

于 2012-10-26T20:12:54.613 回答