如何从后端向用户本地主机上的另一台服务器发出请求

Posted

技术标签:

【中文标题】如何从后端向用户本地主机上的另一台服务器发出请求【英文标题】:How to make requests from back-end to another server on user’s localhost 【发布时间】:2020-12-18 17:32:27 【问题描述】:

我有一个标准的客户端-服务器设置,前端是 ReScript (ReasonML),后端是 Python 服务器。

用户正在 localhost:2000 上运行一个单独的进程,我从浏览器 (UI) 连接到该进程。我可以向他们的服务器发送请求并接收响应。

现在我需要从我的后端服务器发出这些请求,但不能直接这样做。我假设我需要某种方式通过浏览器进行操作,它可以与用户计算机上的 localhost 通信。

    有哪些概念性的方法可以实现这一点(最好使用 GraphQL)?我需要订阅或网络套接字或其他东西吗?

    您是否可以为此推荐任何特定的库(可能作为其他编程语言的示例)?

【问题讨论】:

【参考方案1】:

我认为使用 GraphQL 最简单的解决方案确实是使用 Subscriptions,最常见的 Rescript GraphQL 客户端已经拥有这样的功能,至少 ReasonRelay、Reason Apollo Hooks 和 Reason-URQL 拥有它。

【讨论】:

您能否详细说明客户将如何响应订阅? AFAIK 订阅是从服务器到客户端的一种方式,但在这种情况下,我们有效地从服务器向客户端发出异步请求并反转服务器-客户端关系。 我猜确切的实现将取决于您使用的客户端库,但基本上您可以在挂钩的参数回调之一(onNext,onCompleted)中发送突变,具体取决于您的用例,或者使用 Relay,引用订阅值的组件将自动重新呈现,您将根据订阅结果触发突变。 终于明白了——我需要在发送订阅和收到新突变之间有效地暂停服务器端的执行。是否有一些您会知道的方法/约定?在本机 Python 中,这将是一个 yield 操作,但这是不同的,因为突变不一定与 yield 发生的位置耦合 -> 它会进入 GraphQL 端点。 我在这里提出了一个后续问题:***.com/questions/63673027/… 以获得完整的解决方案。

以上是关于如何从后端向用户本地主机上的另一台服务器发出请求的主要内容,如果未能解决你的问题,请参考以下文章

在同一网络上的另一台计算机上连接到 neo4j?

从网络中的另一台计算机访问本地 GAE SDK 服务器

禁用来自客户端脚本的OPTIONS请求

如何从另一台计算机连接到JavaDB?

windows系统下,如何定期把本地文件夹备份到远程的另一台机子上?

使用 webmatrix 访问另一台计算机上的 localhost