带有Node.js和socket.io的WebSockets

时间:2011-11-12 23:31:45

标签: javascript node.js socket.io

我使用canvas和Javascript构建游戏,我想使用WebSockets和Node.js实现多人游戏功能

我是Node的新手,我已经设法使用以下代码启动并运行基本的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);

一切正常,当我在端口8888上导航到我的服务器IP时,我得到“Hello World”的响应。我的问题是,这是我需要开始使用带有Node的WebSockets吗?我听说有人说我仍然需要socket.io以便Node可以使用套接字,但我不知道这只是一个帮助我使用套接字的库,或者Node是否真的无法理解套接字。

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

感谢。

2 个答案:

答案 0 :(得分: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(有一篇关于共享JavaScripts的段落Node.js和前端)。

答案 1 :(得分:2)

你需要socket-io,因为它是一个建立在节点js之上的库。 Socket io创造了一个" socket"因此,数据可以从Web应用程序传输到服务器,反之亦然。 node js只是服务器的javascript接口。

有关如何设置socket-io的信息:

Installing/setting up Socket.IO on my server