带有Node.js和socket.io的WebSockets

我使用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吗? 无论哪种方式,我会如何去做这件事?

谢谢。


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

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

在我的服务器上安装/设置Socket.IO


两周前,我把我的博客教程放在Node.js和WebSocket - 简单聊天教程上。
基本上,我将这个WebSocket模块用于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
    });
});

如果你正在开发多人游戏,你可能有兴趣与Mozilla的Rob Hawkes谈谈HTML5游戏(他描述了他开发基于WebSocket的多人游戏的经验),还有一篇文章用Node.js开发多人游戏HTML5游戏(有一段关于共享Node.js和前端中的JavaScript)。

链接地址: http://www.djcxy.com/p/44727.html

上一篇: WebSockets with Node.js and socket.io

下一篇: Online/Offline events‎ work on Chrome but not in Firefox