如何在socket.io中编写自定义emitEvent进行处理?

时间:2013-02-06 13:10:53

标签: node.js websocket socket.io processing processing.js

我正在使用processing.js,node.js和socket.io编写多人游戏。

问题#1:

在客户端,我使用p5.js创建一个Ball类。 我希望服务器发送参数来使用该类创建一个数组(balls.push(new Ball(x,y));),这样每个客户端都可以在画布上移动一堆球。

我知道我应该使用socket.io向客户端发出参数,但我不知道。 通常,数组是在p5内部的setup函数内创建的......那么socket怎么做呢?

问题#2:

客户端如何将mouseX和mouseY发送到服务器?然后服务器如何将其他人的mouseX和mouseY发送回每个客户端?

我尝试将p5.js变成这样的普通js:

         (function () {
            "use strict"; 
                function sketchProc(processing) {
                   var p=processing,
                   var ...,
                   var ...;

                   function ball(){...}

                   p.setup=function(){}
                   p.draw=function(){}
                    }

             var canvas = document.getElementById("canvas1"),
                p = new Processing(canvas, sketchProc);

               }());

但我不知道这是否有帮助...

1 个答案:

答案 0 :(得分:0)

只应在连接事件中将球传递给客户端。这就是节点的美丽所在,代码共享。

要创建套接字服务器,您可以使用节点的本机Net模块或Socket.io

在服务器上:

var server = net.createServer();
server.listen(PORT, HOST);
server.on('connection', function(socket) {    
    socket.write({ type: "BallsArray", data: BallsArray });
});

在客户端上,您使用带有Socket.io的WebSockets:

var client = io.connect('http://localhost:3000');
var BallsArray = null;
client.on('message', function(msg) {
    if(msg.type == "BallsArray")
        BallsArray = msg.data; 
});