Deno 中如何使用 RPC 通信

阅读时长 7 分钟读完

前言

Deno 是一种现代化的 JavaScript 和 TypeScript 运行时,它基于 V8 引擎和 Rust 语言实现,是一个安全的运行时环境。在 Deno 中,使用 Remote Procedure Call(RPC)通信可以使不同的 Deno 应用程序之间进行通信和交互。

本文将介绍如何在 Deno 中使用 RPC 通信,以及如何构建一个简单的示例。

RPC 概述

RPC 是一种远程调用协议,它允许程序在网络上调用另一个程序的子程序或函数。在 RPC 模型中,请求消息将被发送到远程主机上的服务器进程,该进程将执行相应的操作,并将响应消息返回给客户端进程。

在 Deno 中使用 RPC

在 Deno 中,可以使用标准模块库中的 Deno.connect() 方法来建立 RPC 连接。该方法接受一个 URL 参数,该 URL 必须具有 tcp:udp:unix: 方案的前缀,用于指定不同的传输协议。

下面是一个简单的例子,演示了如何使用 Deno.connect() 方法建立基本的 TCP 连接:

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

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

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

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

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

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

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

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

在上述示例中,服务器监听在 8000 端口上,并在客户端连接时将 "Hello, client!" 发送回客户端。客户端连接到服务器并读取响应消息。

构建简单的 RPC 应用程序

接下来,我们将构建一个简单的 RPC 应用程序,该应用程序将为客户端提供两个基本操作:将两个数字相加并将结果返回,以及返回当前日期和时间。

首先,我们将创建一个名为 rpc-server.ts 的文件,该文件将实现两个操作。代码如下:

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

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

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

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

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

  --- ----

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

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

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

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

在代码中,我们创建了一个 TCP 服务器,并监听在 8000 端口上。当客户端连接时,我们读取请求内容,然后根据内容执行操作。如果请求是 "add",则我们要求用户输入两个数字,并返回它们的和。如果请求是 "datetime",则我们返回当前日期和时间。否则,我们返回 "Invalid operation!"。

接下来,我们将创建一个名为 rpc-client.ts 的文件,该文件将连接到服务器并执行两个操作。代码如下:

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

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

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

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

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

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

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

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

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

在代码中,我们定义了两个函数 adddatetime,并在最后调用它们。函数 add 连接到服务器并发送 "add" 请求,然后要求用户输入两个数字。函数 datetime 连接到服务器并发送 "datetime" 请求。每个函数都打印响应消息,并在结束时关闭连接。

运行示例

要运行上述示例,请在终端中打开两个窗口,一个作为服务器,另一个作为客户端。在第一个窗口中,运行以下命令以启动服务器:

服务器现在正在侦听 8000 端口。在第二个窗口中,运行以下命令以启动客户端:

客户端将连接到服务器并运行两个操作。您应该会在终端中看到以下输出:

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

总结

在本文中,我们介绍了如何在 Deno 中使用 RPC 通信,并构建了一个简单的示例应用程序。RPC 是一种十分强大的通信方案,为不同的应用程序之间提供了无缝的通信和数据交互的能力。在实际开发中,开发者应该根据实际应用场景,选择不同的通信协议和方案。

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

纠错
反馈