Firebase - 切换到 WebSocket 协议 - 握手不起作用

Posted

技术标签:

【中文标题】Firebase - 切换到 WebSocket 协议 - 握手不起作用【英文标题】:Firebase - Switching to WebSocket protocol - handshake not working 【发布时间】:2020-01-23 23:32:49 【问题描述】:

我正在使用 ESP-01/ESP8266 Wifi 模块与我的 google firebase 项目建立 SSL 连接。 我已经能够使用 HTTP 协议和 REST API 向/从数据库写入/读取,我的下一个目标是将协议切换到 WebSocket,以便服务器和客户端(我的板)可以在初始之后使用此协议握手。目前我什至没有让握手工作,这就是我目前卡住的地方。

到目前为止我尝试了什么:

(1) 首先,我用 SSL 打开 TCP 套接字,连接到 wss://eletronica-ab6b1.firebaseio.com,端口 443。 SSL 步骤由 wifi 模块完成,SSL/TLS 是其功能之一。

(2) 连接成功后,我向服务器发送如下HTTP包,实际上只是一个HTTP头,没有数据。包: GET /January HTTP/1.1 Host: eletronica-ab6b1.firebaseio.com Upgrade: Websocket Connection: Upgrade Sec-WebSocket-Version: 13 Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==

这是服务器的响应:

为什么我使用“一月”?检查,这是我的数据库:

我需要改变什么才能工作?我的意思是标题的内容以及与域的连接。

问候。

编辑: 我的最终目标是:董事会建立与 firebase 服务器的恒定 TCP 连接。当数据库的某个值发生变化时,服务器会通过协议通知主板,因此主板不需要一直轮询服务器(每X秒)以了解该值是否已更改。我是否走在正确的道路上?使用 WebSocket 协议?

【问题讨论】:

【参考方案1】:

我从未尝试过,但您可以找到一种使用 gRpc https://firebase.google.com/docs/firestore/reference/rpc/ 实现类似于 websockets 的方法

【讨论】:

我不了解 RPC 协议,我会尽快了解。我的最终目标是:董事会建立与 firebase 服务器的恒定 TCP 连接。当数据库的某个值发生变化时,服务器会通过协议通知棋盘,因此棋盘不需要一直轮询服务器(每X秒)以知道值是否被更改。跨度>

以上是关于Firebase - 切换到 WebSocket 协议 - 握手不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Unity+Firebase-Database [错误] WebSocket:ws_0 - 无法连接

在反应中切换聊天时如何订阅新的websocket会话

从 Fabric 切换到 Firebase Crashlytics 问题:缺少 Crashlytics 构建 ID

如何通过 Firebase Cloud Functions 上的 .firebaserc 切换到另一个 serviceAccountKey.json?

如何在实时 Firebase 数据库上侦听以通过后端 laravel 和 websocket 动态获取数据,而不使用 javascript

使用带有 Firebase 的 Ionic2 切换