使用 Deno 与 WebSocket 创建在线游戏的实例

阅读时长 6 分钟读完

Deno 是一种可以运行 JavaScript 和 TypeScript 的运行时环境,具有安全、可靠和高效的特点,而 WebSocket 是一种全双工的通信协议,可以让客户端和服务器之间实现实时的双向通讯。在本文中,我们将通过使用 Deno 和 WebSocket,来创建一个简单的在线游戏的实例。

准备工作

在开始之前,您需要确保您已经安装了 Deno。您可以从官网下载最新版本的 Deno,或使用您所熟悉的包管理器来安装 Deno。

创建服务器

我们将首先创建我们的服务器,使用的是 Deno 中的标准库中的 httpws 模块。我们将创建一个 server.ts 文件,然后添加以下内容:

-- -------------------- ---- -------
------ - ----- - ---- ---------------------------------------
------ - ----------- --------------- - ---- ----------------------------------

----- ------ - ------- ----- ---- ---

------------------- ------- -- ---- -------

--- ----- ------ --- -- ------- -
  -- ----------- --- ----- -- ------- --- ------ -
    -- ----------------- -
      -----------------
        ----- ---------
        ---------- ------
        ---------- ------
        -------- ------------
      -------------- -- -
          ------------------- -------------

          ------------------ ----- -- -
            ---------------------- -- -----

            ---------------
          ---

          ---------------- -- -- -
            ------------------- ----------------
          ---
      ---
    -
  -
-

我们首先导入了 httpws 模块,然后使用 serve 函数创建了一个服务器,绑定在 8080 端口上。之后,我们使用一个 for-await 循环来处理来自客户端的请求。当收到了一个 GET 请求,且 URL 路径为 /ws 时,我们检查请求是否可接受。如果是,我们就建立了 WebSocket 连接,并在 acceptWebSocket 函数返回的 Promise 中添加了一些回调函数来处理消息和连接断开的情况。

创建客户端

我们现在需要为我们的客户端创建一个 HTML 文件,其中包含一些 JavaScript 代码,以便我们可以使用 WebSocket 与服务器进行通信。我们将创建一个名为 client.html 的文件,如下所示:

-- -------------------- ---- -------
--------- -----
------
  ------
    ----- ----------------
    ------------- ------------
  -------
  ------
    ---------- ---------
    ------
      ------ ----------- -------------------
      ------- ---------------------------
    -------
    --- -------------------

    --------
      ----- ------ - --- ------------------------------------
      ----- -------- - ------------------------------------
      ----- ------------ - -----------------------------------------

      ------------------------------- -- -- -
        ---------------------- -- ---------
      ---

      ---------------------------------- ------- -- -
        ---------------------- -- ------------

        ----- -- - -----------------------------
        ------------ - -----------

        -------------------------
      ---

      --------------------------------------------------------- ------- -- -
        -----------------------

        ----- ------- - -------------------

        -- -------- --- --- -
          ---------------------
          ------------------ - ---
        -
      ---
    ---------
  -------
-------

在上面的代码中,我们使用了 WebSocket 类创建了一个 WebSocket 连接,连接到我们刚刚创建的服务器(请注意,我们将 URL 的协议的 http 改为了 ws,这是 WebSocket 的默认协议)。我们还定义了一些回调函数,用于处理连接建立、收到消息等事件。

在 HTML 中,我们创建了一个简单的表单,允许用户输入消息,并在用户提交表单时发送该消息到服务器。我们还创建了一个空的 <ul> 元素,用于显示我们收到的消息。

运行应用程序

现在,我们已经创建了服务器和客户端,让我们将它们合并在一起并运行我们的应用程序。首先,我们需要在终端窗口中进入到我们的项目目录中,并运行以下命令来启动我们的服务器:

运行该命令后,您应该看到 Server running on port 8080 的输出,表示服务器已经成功地启动。

接下来,我们需要在我们的浏览器中打开 client.html 文件,以连接到我们的服务器。您可以双击该文件并在浏览器中打开该文件,或将它放到您熟悉的 Web 服务器中,然后在浏览器中打开它。

一旦您打开了 client.html 文件,您将看到一个简单的表单,您可以在其中输入消息并单击“发送”按钮。您的消息将被发送到服务器,并显示在您的浏览器窗口下方。

结论

在本文中,我们通过使用 Deno 和 WebSocket,创建了一个简单的在线游戏的实例。我们首先创建了一个使用 Deno 标准库中的 httpws 模块的 WebSocket 服务器,然后创建了一个包含 JavaScript 的 HTML 文件,用于作为我们的客户端。最后,我们将两者合并在一起,并启动了我们的应用程序。

此示例是一个非常简单的 WebSocket 应用程序,但它向您展示了如何使用 Deno 和 WebSocket 来构建实时的在线应用程序。希望本文对那些想使用 Deno 和 WebSocket 开发实时应用程序的人们有所帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67287e552e7021665e206f58

纠错
反馈