【问题标题】: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 通信。

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

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

【问题讨论】:

    标签: python rest graphql reason rescript


    【解决方案1】:

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

    【讨论】:

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