首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >socket.io只发出功能服务器端?

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

Stack Overflow用户
提问于 2016-01-04 22:32:11
回答 2查看 3.2K关注 0票数 1

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

我将如何向所有客户端发出此函数?

代码语言:javascript
复制
 function init()
    {
         numShapes = 10;
         shapes = [];
         drawScreen(); 
         ctx= canvas.getContext('2d'); 
         setInterval(draw,10);
         makeShapes();
    }

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

我现在试图添加一个实时元素,但无法理解socket.emit。如何将球从服务器发送到所有客户端?然后为单击事件使用客户端代码?

EN

回答 2

Stack Overflow用户

发布于 2016-01-04 22:44:26

这取决于你想要发射什么。

我首先建议您查看他们网站http://socket.io/get-started/chat/上的聊天示例,看看如何在代码中设置socket.io。

有关于如何设置Node.js和Socket.io的信息,您需要这两种信息才能使用socket.emit

您对客户端和服务器端交互的关注不是一个问题。你只能做一次或者两次。

你可能有些东西看起来像:

代码语言:javascript
复制
io.on('connection', function(socket){
    socket.emit('coordinates', {x: /* your shape's x data */, y: /* your shape's y data */);
});
票数 0
EN

Stack Overflow用户

发布于 2016-01-04 23:58:57

在您的服务器上,如果服务器有这个球,那么您可以通过以下方法获取该球并将其发送给每个连接的客户端:

代码语言:javascript
复制
io.emit('ballMove', {x: /*x coordinate of ball*/, y: /*y coordinate of ball*/});

在客户端套接字上,您必须侦听服务器发出的'ballMove‘。

类似于:

代码语言:javascript
复制
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; 
});

如果希望套接字将其本地球的坐标广播给其他客户端(发出它的套接字除外),则可以:

代码语言:javascript
复制
socket.broadcast.emit('ballMove', { x: ball.x, y:ball.y});

除了发出事件的套接字外,服务器上所有侦听ballMove的连接客户端都将接收数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34601065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档