【问题标题】:Firebase SSE (server-sent events) REST. Monitor + Write on same connectionFirebase SSE(服务器发送事件)REST。在同一连接上监控 + 写入
【发布时间】:2020-05-30 04:09:23
【问题描述】:

我正在使用 ESP8266 wifi 模块进行此测试。 我想保持与 Google Firebase 的持续连接,以监视数据库值的变化并能够写入它,并且能够在同一连接上执行这两项操作。那可能吗?因为做事情分开他们工作。

这是我的测试数据库:

情况 1 - 工作 - 监控

(1) 打开与 eletronica-ab6b1.firebaseio.com 的 TCP/SSL 连接,端口 443。 (2) 发送如下HTTP数据包: GET /database333.json?auth=DZSQwLoNWAneWA9BcEfAgnelmY965pq98HF4pITU HTTP/1.1 Host: eletronica-ab6b1.firebaseio.com Accept: text/event-stream LINE FEED (3) 这样做,每当“val”更改时,我都会收到通知,并且谷歌每 30 秒发送一个保持活动数据包。这行得通。

情况 2 - 工作 - 写

(1) 打开与 eletronica-ab6b1.firebaseio.com 的 TCP/SSL 连接,端口 443。 (2) 发送如下HTTP数据包: PATCH /database333.json?auth=DZSQwLoNWAneWA9BcEfAgnelmY965pq98HF4pITU HTTP/1.1 Host: eletronica-ab6b1.firebaseio.com Content-Type: application/json Content-Length: 13 "LINE FEED" {"val":"555"} (3) 这样做,值“555”被正确写入数据库。

情况 3 - 不起作用 - 尝试混合它们

(1) 打开与 eletronica-ab6b1.firebaseio.com 的 TCP/SSL 连接,端口 443。 (2)发送第一个HTTP包: GET /database333.json?auth=DZSQwLoNWAneWA9BcEfAgnelmY965pq98HF4pITU HTTP/1.1 Host: eletronica-ab6b1.firebaseio.com Accept: text/event-stream LINE FEED (3) 此时我正在监视数据库中的变化,并且每 30 秒从 Google 接收一个保活数据包。好的,直到这里。 (4) 然后我发送以下 HTTP 数据包,尝试写入数据库: " PATCH /PIC.json?auth=DZSQwLoNWAneWA9BcEfAgnelmY965pq98HF4pITU HTTP/1.1 Host: eletronica-ab6b1.firebaseio.com Content-Type: application/json Content-Length: 13 LINE FEED {"val":"333"} (5) 这样做,我尝试使用相同的连接在数据库中写入,但是写入操作没有成功。

有人知道我做错了什么吗?

【问题讨论】:

    标签: firebase rest firebase-realtime-database


    【解决方案1】:

    通过其流式 REST API 侦听和写入 Firebase 实时数据库将需要两个单独的连接。无法在与连续读取操作相同的连接上执行写入操作。


    更多细节

    Firebase 实时数据库的流式 REST API 是使用 REST 服务器发送事件协议 (SSE) 实现的。 SSE 是单向的:每个连接要么发送数据接收数据,但不能同时发送数据。

    基于 SSE 与 Firebase 实时数据库用于其内部 SDK 到服务器通信的双向 Web 套接字协议相比,这显着简化了其在现有 HTTP 环境中的实现。

    另见:

    【讨论】:

    • 你 100% 确定吗?
    • 我添加了更多关于为什么会这样的信息。
    猜你喜欢
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多