【发布时间】:2023-03-29 03:09:01
【问题描述】:
我已经使用 socket.io 构建了项目,我为每个连接的用户创建了一个 div(带有他的 sessionID),并且每次鼠标点击都会将他的 div 移动到他的 web 中的点击位置以及所有其他人的套接字。但我有一个问题,当用户点击屏幕时 - 它会将 div 移动到他的位置,但对于所有其他客户,它会移动到 他们的最后一次点击位置。
这是我所做的:
socket.on('addPlayer', function(user) {
$('#stage').append('<div class="player" id="user_' + user + '">' + user +'</div>');
});
$('#stage').on('click', function(e) {
mouseX = e.pageX;
mouseY = e.pageY;
xp += (mouseX - xp);
yp += (mouseY - yp);
socket.emit('move', {
xp: xp,
yp: yp
});
});
socket.on('move', function(data) {
$('#user_' + data).animate({ left: xp + 'px', top: yp + 'px' }, 400 );
});
我的服务器端
socket.on('move', function(data) {
io.emit('move', socket.id);
});
有人看到问题了吗?请在这方面帮助我..
【问题讨论】:
-
似乎您正在使用全局
xp和yp设置 let 和 top ,而不是您传递给data的内容 -
当您
.emit('move')时,您将xp和yp传递给服务器,但是当您在.on('emit')中接收时,服务器不会向您发送任何xp和yp。 -
@robinvrd 我不明白该怎么做。我更改为 data.xp 它不移动 div。没有错误
-
@Dasmond 在服务器端显示你的
socket.emit('move')。 -
@robinvrd 查看编辑
标签: javascript jquery html sockets socket.io