2012-09-03 180 views
0

我在节点js中新增了一个。客户端浏览器使用节点js和socket.io挂起

我使用节点js和socket.io进行浏览器游戏聊天。经过几天的学习和编码聊天工作正常,但我得到的问题 - 客户端浏览器更多的客户端操作后挂起。

例如:客户端点击“添加”按钮多次向聊天添加文本,每次点击它后,浏览器挂起的次数越来越多,但页面刷新后,一切正常,直到他再次点击“添加“按钮很多次。

这个问题不仅出现在“添加”按钮上,而且客户端也多次改变聊天(只显示私人或公共聊天)。

我不认为这个问题出现在服务器代码中,因为当浏览器挂起给我时,对于其他客户端聊天工作正常。 所以我认为问题在客户端。在那里我使用了默认设置的socket.io。

也许有人得到同样的问题,并知道如何解决它?

<script src="sockets/socket.io.min.js"></script> 
<script> 
var socket = io.connect('http://'+chatSocketAddress+':'+chatSocketPort); 
function ANgetChatRecords(){ 
    socket.emit('getRecords', { my_id:my_id, type:chat_pub_chatShow, my_perm:my_perm, lang:my_lang }); 
    socket.on('getRecordsAnswer', function (data) { 
    document.getElementById("chatbox_pub_entry").innerHTML = data.text; 
    }); 
} //and ther other similar functions, like add record, delete record ... 
</script> 
+0

问题几乎可以肯定地在客户端上,正如您怀疑的那样。您可以向我们展示pastebin或类似代码吗? –

+0

客户端代码很简单:

+0

您是否检查是否将许多侦听器添加到同一事件? – Dslayer

回答

0

我只是说,你可以设置更多socket.on()即使没有明确。 你那里的代码看起来很干净,但也许你正在向同一个事件添加更多内容并将它们堆叠在一起。 添加一些控制台日志,以便您可以看到它们实际被调用的次数。

我的代码看起来是这样的:

listenForMessage: function(){ 
     param_socket.on("new", function (data) { 
       console.log('new'); 
       console.log(data); 
       app.newHandler(data); 
      }); 

     param_socket.on("done", function (data) { 
       console.log('done'); 
       app.doneHandler(data.id,data.success) 
      }); 

     param_socket.on("change", function (data) { 
       console.log('change'); 
       app.changeHandler(data.id,data.success) 
      }); 

    }, 

一件事,你调用这个函数只有一次?因为你正在设置事件。

+0

噢,我认为你是对的,因为每次点击,客户端调用函数,并在每个函数中添加新的监听器。现在我将听众移出功能,看起来效果很好。 tnx;) –

相关问题