2011-11-12 91 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的文章)。