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 - 无法连接
从 Fabric 切换到 Firebase Crashlytics 问题:缺少 Crashlytics 构建 ID
如何通过 Firebase Cloud Functions 上的 .firebaserc 切换到另一个 serviceAccountKey.json?
如何在实时 Firebase 数据库上侦听以通过后端 laravel 和 websocket 动态获取数据,而不使用 javascript