各位,大家好,刚刚系统上线时遇到一个比较棘手的问题,请各位帮助一下。
问题具体是这样的,现在有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,请各位大牛帮助一下,下周客户就需要看到效果了!!!!!!