Node.js 通过WebSocket广播鼠标移动

Node.js 通过WebSocket广播鼠标移动,node.js,html,websocket,mousemove,Node.js,Html,Websocket,Mousemove,我在服务器端使用Nodejs,在客户端使用websockets实现了一个简单的“在线白板” “主机”将鼠标坐标发送到所有其他连接的客户端。 极其简化: 客户 whiteboard.onmousemove = function() { Client_Send({x:event.pageX, y:event.pageY}); } 服务器 socket.on("text") = function(text) { // ...GET A LIST OF CONNECTED USERS MINUS

我在服务器端使用Nodejs,在客户端使用websockets实现了一个简单的“在线白板”

“主机”将鼠标坐标发送到所有其他连接的客户端。 极其简化:

客户

whiteboard.onmousemove = 
function()
{
 Client_Send({x:event.pageX, y:event.pageY});
}
服务器

socket.on("text") =
function(text)
{
 // ...GET A LIST OF CONNECTED USERS MINUS THE MASTER...
 Broadcast(users, text); 
}
问题是:

  • 如果我发送每一次鼠标移动,客户端似乎都会被更新“淹没”,消息以5-10个集群的形式到达,然后是一个小插曲,然后是更多的集群消息

  • 如果只每隔几毫秒发送一次更新(例如,使用setInterval而不是在每次MouseMove事件时发送),我仍然会得到一些集群,即使每秒只有8-10次更新


我在这里遗漏了一些WebSocket的基础知识吗?(第一次使用它们)

您多久发送一次移动?你是否有一些去抖动/延迟?案例1:每一个onmousemove事件(没有去抖动-我假设一个onmousemove事件不会发生,除非coords发生了变化)案例2:在一个(1000/8)毫秒的常规计划中(去抖动:如果coords没有变化,我不发送更新)您是否检查了套接字服务器上的
ulimit
?您是否在客户端和服务器之间使用某种负载平衡器或反向代理?没有负载平衡器或反向代理。我将检查“ulimit”设置-我不确定。我已经实现了一个非常简单的服务器,对于websockets实现,我依赖nodejs websocket(),如果您微调最大缓冲区长度,您可能也会看到改进-查看发送移动的频率?你是否有一些去抖动/延迟?案例1:每一个onmousemove事件(没有去抖动-我假设一个onmousemove事件不会发生,除非coords发生了变化)案例2:在一个(1000/8)毫秒的常规计划中(去抖动:如果coords没有变化,我不发送更新)您是否检查了套接字服务器上的
ulimit
?您是否在客户端和服务器之间使用某种负载平衡器或反向代理?没有负载平衡器或反向代理。我将检查“ulimit”设置-我不确定。我已经实现了一个非常简单的服务器,对于websocket实现,我依赖于nodejs websocket(),如果您微调最大缓冲区长度,您可能还会看到一些改进—请参阅