gpt4 book ai didi

node.js - 使用 socket.io 在其他客户端计算机中显示鼠标指针移动

转载 作者:搜寻专家 更新时间:2023-10-31 23:42:54 26 4
gpt4 key购买 nike

我正在使用 socket.io 引擎来跟踪浏览器中的鼠标指针移动并将其发送到多个网络浏览器。这里我获取鼠标指针的 x, y 坐标,然后使用 socket.io 引擎发送它。

socket.emit('mouse_position', {mx : x, my : y});

之后我通过以下代码从应用程序中获取相关数据

socket.on('mouse_position', function(data) {
socket.broadcast.emit('mouse_position_update', data);
});

我使用一个raphael 对象在其他浏览器中显示鼠标指针,并使用animate 函数根据父鼠标指针移动显示鼠标指针。

var paper = new Raphael(canvas, 200, 200);
var cur = paper.circle(0, 0, 3);
cur.animate({
cx : data.mx,
cy : data.my
}, 1, 'linear');

此代码中的问题是,如果我有很多用户(>100)登录到此系统,将使用大量带宽并且系统可能会崩溃。谁能告诉我有没有更好的方法来使用 socket.io 引擎来实现这个系统,或者有什么算法可以用来解决带宽问题。任何形式的帮助对我来说都是很大的帮助。

最佳答案

您应该减少向您发送鼠标坐标的时间。以您的方式,您的鼠标每改变一个像素,您的数据就会被发送。 (将 console.log(1) 放入回调中并移动鼠标几秒钟)。

您可以通过以下方式减少向您发送数据的时间:

var prevMouseX, prevMouseY;
var intervalID = window.setInterval(function(){
... you get your mouse coordinates

if (prevMouseX !== x || !prevMouseY !== y) {
socket.emit('mouse_position', {mx : x, my : y});
}
}, 500);

这样您将每 0.5 秒发送一次鼠标坐标,并且仅当它们发生变化时才发送。

关于node.js - 使用 socket.io 在其他客户端计算机中显示鼠标指针移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24598743/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com