如何利用 Deno 实现 Websocket 服务端

Websocket 技术使得客户端和服务端之间的双向通信变得更加容易,同时也为实现实时通信和推送提供了强有力的支持。本文将介绍如何利用 Deno 实现 Websocket 服务端,它是一种 Typescript 的运行时,具有内置的模块管理器和类型系统支持。我们将在本文中详细展示如何轻松地使用 Deno 构建 Websocket 服务端,包括从安装到实现的全部过程。

Deno 简介

Deno 是一种新兴的 Typescript 运行时,它是由 Node.js 的创始人 Ryan Dahl 在 2018 年推出的。与 Node.js 不同的是,Deno 具有内置的模块管理器,支持延迟加载模块,同时还具有 Typescript 的内置支持和安全的默认设置。

安装 Deno 的命令如下:

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

为了验证 Deno 是否已经成功安装,可以使用以下命令进行检查:

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

如果输出的版本号正确,则说明 Deno 已经成功安装。

构建 Websocket 服务端

创建项目目录

首先,创建项目目录,并切换到该目录中:

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

安装依赖

接下来,我们将需要安装两个包:Denon 和 ws,分别为 Deno 的热重载工具和实现 Websocket 的依赖。

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

创建服务端代码

我们将创建一个名为 server.ts 的文件,在其中实现 Websocket 服务端的代码。以下是一个基本的服务端代码示例:

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

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

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

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

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

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

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

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

运行服务器

启动 Denon 以监视文件并自动重载服务器:

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

现在访问 http://localhost:8080,你将看到应用程序正在运行,但连接尚未建立。现在,我们将创建一个客户端来建立连接:

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

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

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

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

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

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

现在访问 http://localhost:8080,你将看到 Websocket 客户端建立连接,并且你可以通过输入信息并点击“Send”按钮来发送信息。

结论

现在你已经学会了如何利用 Deno 实现 Websocket 服务端。本文中,我们了解了 Deno 基础知识和它的特点,并通过实现服务端和客户端代码,向你展示了 Deno 的强大功能。 Deno 的灵活性和易用性使它成为实现 Websocket 服务端的理想选择。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/670f05d55f5512810262af13


猜你喜欢

  • 如何在 Enzyme 测试中使用 Redux 中间件

    Enzyme 是一个常用的 React 测试工具,它可以帮助我们模拟 React 组件的行为,并检查渲染结果。而 Redux 则是一个常用的状态管理工具,它可以帮助我们更好地管理 React 应用的状...

    7 天前
  • Kubernetes 集群网络插件 Calico 的部署

    Kubernetes 是目前最流行的容器编排平台之一,它提供了强大的功能来管理容器化应用程序。在 Kubernetes 环境中,网络是一个非常重要的组件,因为它是容器之间通信的媒介。

    7 天前
  • ECMAScript 2017 中的 Object.values 和 Object.entries:如何使用

    ECMAScript 2017 中引入了 Object.values 和 Object.entries 这两个方法。它们可以让我们在对象处理时更加方便快捷,从而简化了前端开发的过程。

    7 天前
  • Redux 教程:从入门到精通

    Redux 是 JavaScript 应用程序的一个可预测的状态容器,利用 Flux 架构实现单向数据流,适用于 Web 和本地应用程序。Redux 在全球范围内被广泛使用,并且是 React 生态系...

    7 天前
  • Chai 断言库中 expect、assert、should 有何区别

    前言 在前端开发中,测试是必不可少的一环。而断言库则是测试中最重要的一环。Chai 断言库是目前最流行的断言库之一,简洁易用且功能强大。其中,expect、assert、should 是 Chai 断...

    7 天前
  • Angular 中 RxJS 中的 Usages、Tips and Tricks

    简介 RxJS 是一款流行的 JavaScript 库,用于处理异步和基于事件的程序,使其更具可读性和可维护性。Angular 作为一款流行的前端框架,已经将 RxJS 及其观察者和迭代器模式作为其核...

    7 天前
  • 深入理解 Express.js 中的路由处理

    基础概念 在 Express.js 中,路由指的是确定如何响应客户端对特定 URI(或路径)的请求。每个路由可以具有一个或多个处理器函数,当路由匹配时这些函数将按特定顺序被调用。

    7 天前
  • Next.js 11 发布:多项新特性加持,提升开发体验和性能

    Next.js 是一款由 Vercel 开发的基于 React 的服务器端渲染框架,是 React 生态系统中使用最广泛的服务器端渲染框架之一。2021 年 6 月 2 日,Next.js 推出了最新...

    7 天前
  • 面向 Web Components 的 CSS 技巧

    在现代化网页应用中,Web Components 模式已经成为一种主流的开发思路。作为对用户端开发质量要求越来越高的回应,开发者们需要确保每个组件的样式各不相同,且满足业务需求。

    7 天前
  • 如何使用 PM2 对 Node.js 应用进行部署

    Node.js 是一种非常流行的服务器端异步 JavaScript 运行环境,它支持极高的并发连接,而且可以轻松地进行扩展。在世界范围内已经有许多使用 Node.js 来进行 Web 开发的公司。

    7 天前
  • Kubernetes 集群性能提升的优化方法

    前言 Kubernetes 是一种流行的容器编排系统,它能够自动化容器的部署、扩展和管理。随着 Kubernetes 集群的规模扩大,集群性能的问题也变得越来越突出。

    7 天前
  • Promise 中间件模式及其实现方式

    在开发中,我们经常会遇到多次异步操作的情况。例如,一个异步操作完成后再执行另一个异步操作,第二个异步操作可能会依赖于第一个异步操作的结果。传统的解决方式是使用回调函数,但是这将导致回调地狱的情况,代码...

    7 天前
  • Deno 运行环境有哪些安全性方面需要注意的问题?

    介绍 Deno 是一个基于 V8 引擎的新型 JavaScript 运行环境。它由 Node.js 的创始人发起,旨在提供更好的安全性和开发体验。Deno 运行时使用 Rust 编写,在实现安全性方面...

    7 天前
  • Angular 国际化处理:如何实现多语言支持

    Angular 是一款流行的前端框架,它具有一些很好的国际化特性,可以轻松地实现多语言支持。在本篇文章中,我们将探讨如何使用 Angular 的国际化模块来支持多个语言。

    7 天前
  • 解决在 ECMAScript 2021 中使用 for-of 循环时出现的报错

    ECMAScript 2021 是 JavaScript 的最新版本之一,引入了许多新的语言特性和功能,其中包括 for-of 循环。for-of 循环是一种遍历数组和类数组对象的方式,使得代码可以更...

    7 天前
  • Socket.io 心跳包引起的问题及解决方案

    简介 Socket.IO 是一个基于事件驱动的实时通信框架,可以轻松地实现双向通信,支持多种传输协议(WebSocket、Ajax、FlashSocket、JSONP 等),是一款非常流行的实时通信框...

    7 天前
  • Mocha 测试框架:错误处理的几个常见问题及解决方法

    Mocha 测试框架:错误处理的几个常见问题及解决方法 Mocha 是一个流行的 JavaScript 测试框架,其优雅的语法和灵活性使得它成为了很多前端开发者的首选。

    7 天前
  • 解决 Chrome 浏览器下 SSE 长连接断线或失效的方法

    前言 Server-Sent Events(SSE)是一种技术,它允许服务器向客户端推送数据。SSE 基于 HTTP 协议,使用长连接保持连接,有成为长轮询的近似方法。

    7 天前
  • 如何在 Cypress 测试中解决文件上传问题

    如何在 Cypress 测试中解决文件上传问题 Cypress 是一个基于 JavaScript 的前端测试框架,可以用于自动化测试网站应用程序。但是,在进行测试时,如果需要上传文件,可能会遇到一些问...

    7 天前
  • SPA 应用开发中遇到的跨域问题解决方案

    前言 前端领域中,单页应用(SPA)正日渐成为应用开发时的主流。SPA 的优点是无需刷新页面,页面响应更迅速,交互更流畅。但 SPA 应用在开发中也会遇到跨域问题,这就是贯穿一篇文章的主题。

    7 天前

相关推荐

    暂无文章