【问题标题】:WebSockets with Node.js and socket.io带有 Node.js 和 socket.io 的 WebSockets
【发布时间】:2011-12-27 20:17:54
【问题描述】:

我已经使用画布和 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吗?不管怎样,我该怎么做呢?

谢谢。

【问题讨论】:

    标签: javascript node.js socket.io


    【解决方案1】:

    两周前,我在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 和前端)。

    【讨论】:

      【解决方案2】:

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

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

      Installing/setting up Socket.IO on my server

      【讨论】:

        猜你喜欢
        • 2011-03-28
        • 2013-03-08
        • 1970-01-01
        • 2021-12-30
        • 2016-06-06
        • 2013-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多