帧速率下降Socket.io

时间:2018-09-28 11:54:31

标签: javascript socket.io html5-canvas

我刚刚开始使用nodes.js进行编程,但是第一个示例存在问题

任何人都可以帮助我解决问题,以及如何通过console.log自己检查它,例如chrome开发人员工具。

我的小脚本平稳运行了大约一分钟,然后FPS缓慢下降到零方向。 因此,我认为我的代码中存在过载 在客户端,我尝试了请求动画框架和setInternal相同的问题。因此,我认为问题出在服务器端(以及计算机的前端)

这是我的代码的摘录

App.js

setInterval(function(){

var spliceArray = Array();
  objcnt = w.objects.length;
 var i=0;  
 while (i < objcnt)  
 {
 w.objects[i].update();
 if(w.objects[i].hitpoints <= 0 )
 spliceArray.push(i);           
 i++;
 }
 for(var k = 0;k<spliceArray.length;k++) 
 w.objects.splice(spliceArray[k],1);
 for(var i in SOCKET_LIST){
 var socket = SOCKET_LIST[i];
 //socket.emit('newClientship',allobjects[0]);
 socket.emit('newClientship',{x:allobjects[0].xtype.x,y:allobjects[0].xtype.y});
 }
},1000/25);

Index.html

setInterval(function(){
updateFps();
ctx.font="150px Arial"; 
ctx.fillStyle = "white"; 
socket.on('newClientship',function(data){
ctx.clearRect(0,0,canvas.width,canvas.height);
  ctx.fillText(12,data.x,data.y);
 });
drawFps(200,20) ;
},1000/25);

我试图在服务器端创建对象,然后仅将x和y的值发送给客户端

1 个答案:

答案 0 :(得分:0)

index.html

setInterval(function(){
  …
  socket.on('newClientship',function(data){…
  …
},1000/25);

您要一遍又一遍地重新分配事件侦听器。也许这是socket.io的问题,只分配一次监听器,每次数据到达时都会调用它。如果您所有的updateFPS()和画布绘制都不是瓶颈,那么应该可以解决此问题。