【问题标题】:Server to server SSEs服务器到服务器 SSE
【发布时间】:2022-12-11 18:41:04
【问题描述】:

这可能是一个愚蠢的问题,但我无法在网上找到很多关于它的信息。我想知道服务器发送的事件是否可以在 2 个服务器之间使用。我认为理论上这应该是可能的,但我读到的关于 SSE 的所有内容都是关于客户端和 EventSource 对象的。

这很好,但我的 Web API 还必须能够将数据流式传输到不是 Web 浏览器但很可能是后端服务器/网络应用程序的客户端。有人可以确认它可以工作还是不能工作,如果可以,您能否添加一些示例代码来说明后端语言如何订阅它?

【问题讨论】:

  • 从事件源读取可以在后端或服务器之间完成 - 这个 Golang 存储库说明了如何从后端这样做:github.com/r3labs/sse#quick-start。其他资源也存在,例如 NodeJS。它也可以用其他语言实现——您必须编写一个处理程序来处理事件流标头及其由 SSE 生成的文本数据。
  • 谢谢你。如果您将其作为答案发布,我会将其标记为正确。我意识到不同的语言对此有不同的名称,有些使用相同名称的“EventSource”API,有些则只是 SSE API 或 SSE 客户端等。
  • 没问题,很乐意提供帮助!答案已发布

标签: server-sent-events


【解决方案1】:

从事件源(也称为服务器发送事件或 SSE)读取可以从后端完成。这是来自 golang repository (r3labs/sse) 的 sn-p,说明如何创建从事件流读取的后端客户端。

func main() {
    client := sse.NewClient("http://server/events")

    client.Subscribe("messages", func(msg *sse.Event) {
        // Got some data!
        fmt.Println(msg.Data)
    })
}

也可以使用 Python 以及其他框架(例如 NodeJS)来执行此操作。如果您选择的语言无法提供支持,可以通过确定在存在 HTTP 标头 text/event-stream 时如何轮询和读取事件流来实现支持。

参考

  1. Original comment

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-15
    • 2016-04-19
    • 2012-12-16
    • 2015-02-08
    • 1970-01-01
    • 2021-05-29
    • 2021-09-01
    • 1970-01-01
    相关资源
    最近更新 更多