2011-11-12 41 views
2

我用帆布和Javascript构建一个游戏,我想使用的WebSockets实现多人游戏功能和Node.js的的WebSockets与Node.js和受socket.io

我完全新的节点,和我设法得到一个基本的Web服务器启动并运行下面的代码:

var http = require("http"); 

console.log("Server started at port 8888"); 

http.createServer(function(request, response) { 
     response.writeHead(200, {"Content-Type": "text/plain"}); 
     response.write("Hello World"); 
     response.end(); 
}).listen(8888); 

所有的工作,我得到的“Hello World”的,当我浏览到我的服务器IP端口8888。我的问题的答复是,这是我需要开始与节点使用WebSockets吗?我听说有人说我仍然需要socket.io以便Node可以使用套接字,但是我不知道这是否只是一个库来帮助我使用套接字,或者如果Node实际上无法理解套接字。

服务器基本上必须记录所有连接的玩家,他们的分数,他们在画布上的位置等。客户端会偶尔轮询服务器(使用WebSockets)以获取每个人的位置,然后更新他们的画布与返回的信息。我需要socket.io吗?无论哪种方式,我会如何去做这件事?

谢谢。

回答

2

您需要socket-io,因为这是一个建立在节点js之上的库。 Socket io create是一个“套接字”,因此数据可以从Web应用程序传输到服务器,反之亦然。节点js只是您的服务器的JavaScript接口。

有关于如何设置插座-io的信息:

Installing/setting up Socket.IO on my server

3

两个星期前,我把我的博客教程Node.js & WebSocket - Simple chat tutorial
基本上,我把这个WebSocket module for Node.js,只是扩展了该服务器模板(无socket.io):

var WebSocketServer = require('websocket').server; 
var http = require('http'); 

var server = http.createServer(function(request, response) { 
    // process HTTP request. Since we're writing just WebSockets server 
    // we don't have to implement anything. 
}); 
server.listen(1337, function() { }); 

// create the server 
wsServer = new WebSocketServer({ 
    httpServer: server 
}); 

// WebSocket server 
wsServer.on('request', function(request) { 
    var connection = request.accept(null, request.origin); 

    // This is the most important callback for us, we'll handle 
    // all messages from users here. 
    connection.on('message', function(message) { 
     if (message.type === 'utf8') { 
      // process WebSocket message 
     } 
    }); 

    connection.on('close', function(connection) { 
     // close user connection 
    }); 
}); 

如果您正在开发多人游戏,你可能会感兴趣的谈话HTML5 Games with Rob Hawkes of Mozilla(他描述了他与开发多人游戏体验基于WebSocket的游戏)以及文章Developing Multiplayer HTML5 Games with Node.js(这里有一段关于在Node.js和前端中分享JavaScript的文章)。