socket.io只发出功能服务器端?

时间:2016-01-04 22:32:12

标签: javascript node.js socket.io

我正在尝试开发一个实时画布游戏,我有一些代码具有我需要的基本功能但不使用node或socket.io

我如何向所有客户发出此功能?

 function init()
    {
         numShapes = 10;
         shapes = [];
         drawScreen(); 
         ctx= canvas.getContext('2d'); 
         setInterval(draw,10);
         makeShapes();
    }

https://jsfiddle.net/a9b3rm5u/5/

我现在正在尝试添加实时元素,但无法理解socket.emit。我如何从服务器向所有客户端发射球?然后使用客户端代码进行点击事件?

2 个答案:

答案 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的所有连接客户端都将接收除发出事件的套接字之外的数据。