Deno 是一种可以运行 JavaScript 和 TypeScript 的运行时环境,具有安全、可靠和高效的特点,而 WebSocket 是一种全双工的通信协议,可以让客户端和服务器之间实现实时的双向通讯。在本文中,我们将通过使用 Deno 和 WebSocket,来创建一个简单的在线游戏的实例。
准备工作
在开始之前,您需要确保您已经安装了 Deno。您可以从官网下载最新版本的 Deno,或使用您所熟悉的包管理器来安装 Deno。
创建服务器
我们将首先创建我们的服务器,使用的是 Deno 中的标准库中的 http
和 ws
模块。我们将创建一个 server.ts
文件,然后添加以下内容:
-- -------------------- ---- ------- ------ - ----- - ---- --------------------------------------- ------ - ----------- --------------- - ---- ---------------------------------- ----- ------ - ------- ----- ---- --- ------------------- ------- -- ---- ------- --- ----- ------ --- -- ------- - -- ----------- --- ----- -- ------- --- ------ - -- ----------------- - ----------------- ----- --------- ---------- ------ ---------- ------ -------- ------------ -------------- -- - ------------------- ------------- ------------------ ----- -- - ---------------------- -- ----- --------------- --- ---------------- -- -- - ------------------- ---------------- --- --- - - -
我们首先导入了 http
和 ws
模块,然后使用 serve
函数创建了一个服务器,绑定在 8080 端口上。之后,我们使用一个 for-await
循环来处理来自客户端的请求。当收到了一个 GET
请求,且 URL 路径为 /ws
时,我们检查请求是否可接受。如果是,我们就建立了 WebSocket 连接,并在 acceptWebSocket
函数返回的 Promise 中添加了一些回调函数来处理消息和连接断开的情况。
创建客户端
我们现在需要为我们的客户端创建一个 HTML 文件,其中包含一些 JavaScript 代码,以便我们可以使用 WebSocket 与服务器进行通信。我们将创建一个名为 client.html
的文件,如下所示:
-- -------------------- ---- ------- --------- ----- ------ ------ ----- ---------------- ------------- ------------ ------- ------ ---------- --------- ------ ------ ----------- ------------------- ------- --------------------------- ------- --- ------------------- -------- ----- ------ - --- ------------------------------------ ----- -------- - ------------------------------------ ----- ------------ - ----------------------------------------- ------------------------------- -- -- - ---------------------- -- --------- --- ---------------------------------- ------- -- - ---------------------- -- ------------ ----- -- - ----------------------------- ------------ - ----------- ------------------------- --- --------------------------------------------------------- ------- -- - ----------------------- ----- ------- - ------------------- -- -------- --- --- - --------------------- ------------------ - --- - --- --------- ------- -------
在上面的代码中,我们使用了 WebSocket
类创建了一个 WebSocket 连接,连接到我们刚刚创建的服务器(请注意,我们将 URL 的协议的 http
改为了 ws
,这是 WebSocket 的默认协议)。我们还定义了一些回调函数,用于处理连接建立、收到消息等事件。
在 HTML 中,我们创建了一个简单的表单,允许用户输入消息,并在用户提交表单时发送该消息到服务器。我们还创建了一个空的 <ul>
元素,用于显示我们收到的消息。
运行应用程序
现在,我们已经创建了服务器和客户端,让我们将它们合并在一起并运行我们的应用程序。首先,我们需要在终端窗口中进入到我们的项目目录中,并运行以下命令来启动我们的服务器:
deno run --allow-net server.ts
运行该命令后,您应该看到 Server running on port 8080
的输出,表示服务器已经成功地启动。
接下来,我们需要在我们的浏览器中打开 client.html
文件,以连接到我们的服务器。您可以双击该文件并在浏览器中打开该文件,或将它放到您熟悉的 Web 服务器中,然后在浏览器中打开它。
一旦您打开了 client.html
文件,您将看到一个简单的表单,您可以在其中输入消息并单击“发送”按钮。您的消息将被发送到服务器,并显示在您的浏览器窗口下方。
结论
在本文中,我们通过使用 Deno 和 WebSocket,创建了一个简单的在线游戏的实例。我们首先创建了一个使用 Deno 标准库中的 http
和 ws
模块的 WebSocket 服务器,然后创建了一个包含 JavaScript 的 HTML 文件,用于作为我们的客户端。最后,我们将两者合并在一起,并启动了我们的应用程序。
此示例是一个非常简单的 WebSocket 应用程序,但它向您展示了如何使用 Deno 和 WebSocket 来构建实时的在线应用程序。希望本文对那些想使用 Deno 和 WebSocket 开发实时应用程序的人们有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67287e552e7021665e206f58