我正在尝试开发一个实时画布游戏,我有一些代码具有我所需要的基本功能,但不使用节点或socket.io
我将如何向所有客户端发出此函数?
function init()
{
numShapes = 10;
shapes = [];
drawScreen();
ctx= canvas.getContext('2d');
setInterval(draw,10);
makeShapes();
}https://jsfiddle.net/a9b3rm5u/5/
我现在试图添加一个实时元素,但无法理解socket.emit。如何将球从服务器发送到所有客户端?然后为单击事件使用客户端代码?
发布于 2016-01-04 22:44:26
这取决于你想要发射什么。
我首先建议您查看他们网站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 */);
});发布于 2016-01-04 23:58:57
在您的服务器上,如果服务器有这个球,那么您可以通过以下方法获取该球并将其发送给每个连接的客户端:
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的连接客户端都将接收数据。
https://stackoverflow.com/questions/34601065
复制相似问题