我正在尝试开发一个实时画布游戏,我有一些代码具有我需要的基本功能但不使用node或socket.io
我如何向所有客户发出此功能?
function init()
{
numShapes = 10;
shapes = [];
drawScreen();
ctx= canvas.getContext('2d');
setInterval(draw,10);
makeShapes();
}
https://jsfiddle.net/a9b3rm5u/5/
我现在正在尝试添加实时元素,但无法理解socket.emit。我如何从服务器向所有客户端发射球?然后使用客户端代码进行点击事件?
答案 0 :(得分:0)
这取决于你想要发射的东西。
我首先建议您查看其网站http://socket.io/get-started/chat/上的聊天示例,了解如何在代码中设置socket.io。
有关如何设置Node.js和Socket.io的信息,这两者都是您使用socket.emit
所需的。
您对客户端和服务器端交互的担忧不是问题。你只能做一个或两个。
您可能会看到以下内容:
io.on('connection', function(socket){
socket.emit('coordinates', {x: /* your shape's x data */, y: /* your shape's y data */);
});
答案 1 :(得分:0)
在您的服务器上,如果服务器有球,那么您可以通过以下方式获得该球并将其发送到每个连接的客户端:
io.emit('ballMove', {x: /*x coordinate of ball*/, y: /*y coordinate of ball*/});
在客户端套接字上,您必须侦听服务器发出的“ballMove”。
类似的东西:
socket.on('ballMove', function(data){
//get the x and y passed by server from the data argument
//update the clients local ball with the x & y coordinate passed by the server
ball.x = data.x;
ball.y = data.y;
});
如果您希望套接字将其本地球的坐标广播到其他客户端,除了在发出它的套接字上,您可以:
socket.broadcast.emit('ballMove', { x: ball.x, y:ball.y});
服务器上侦听ballMove
的所有连接客户端都将接收除发出事件的套接字之外的数据。