关于HTML5 Server-Sent Event长连接的一个问题

linwenwei 2012-12-16

各位,大家好,刚刚系统上线时遇到一个比较棘手的问题,请各位帮助一下。

问题具体是这样的,现在有8台客户端连接一个PC机,当PC机有消息要通知客户端时,通过后台的一个Notify类推送消息进客户端,客户端通过HTML5 的 Server-Sent Event的EventSource来收信息,具体如下:


if (!!window.EventSource) {

        var source = new window.EventSource('../Service.ashx?cmd=ServerSentEventHandler.Notify');

        source.onopen = function(event) {

            console.log("source.onopen");

        }

        source.onmessage = function(event) {

            console.log('data:'+event.data);

        }

        source.onerror = function(event) {

            console.log('error');

        }

        if (source == undefined) {

            console.log("source == undefined");

            return;

        }


        // source.addEventListener('message', function(e) {

        //}, false);


        source.addEventListener('open', function(e) {

            console.log("connection was open");

        }, false);


        source.addEventListener("meetingclose", function(e) {

            //var event = JSON.parse(e.data);

            this.close();

            loginout();

        }, false);

后面代码省略,服务端推送消息到客户端,有10台客户端连着,随着时间推移,大概5分钟后,客户端接受的消息有点延迟,有点卡,大概会有7台可以收到,慢慢的减少5台,到最后1台,按我理解EventSource对象是一个不间歇运行的程序,时间一长会大量的耗资源,甚至导致客户端浏览器崩溃,那么如何优化这段执行代码呢?是优化这个EventSource还是服务端的推送类,小弟才刚学习HTML5,请各位大牛帮助一下,下周客户就需要看到效果了!!!!!!

bengle 2013-10-10
为什么不用websocket吶?
Global site tag (gtag.js) - Google Analytics