使用 firebase 托管时是否可以重写 websocket 请求?
Is it possible to rewrite websocket requests when using firebase hosting?
有一个 rewrite feature 允许将对 firebase 静态站点的请求写入云 运行 函数:
"hosting": {
...
"rewrites": [{
"source": "/api",
"run": {
"serviceId": "my-api",
}
}]
}
然而,尚不清楚这是否适用于 websocket 请求。
我可以确认重写部分工作正常,因为 websocket 请求没有被 **
重写规则捕获。用邮递员测试似乎请求 returns“404 未找到”到初始 http 升级请求而不是“101 切换协议”。
将 websocket 直接连接到云 运行 域工作正常。
Firebase Hosting 可以比作 CDN 而不是基本代理。当用户针对它发出请求时,将根据 documented order for response handling 处理响应,并将每个请求作为 HTTP(S) 请求处理。
如果使用 Cloud Functions 或 Cloud 运行 对 serve dynamic content 的重写,将根据 Firebase Hosting 的内部缓存 CDN 检查请求,如果存储的响应不是可用或已过期。根据我对其工作原理的理解,这些步骤是通过多个内部请求实现的,而不是直接通过流式传输客户端请求。
相反,您将屏蔽 Cloud Run with a custom domain(在撰写本文时处于预览状态),例如 ws.yourapp.com
,这样您就可以跳过 Firebase 托管的 CDN,但仍然有一个用户友好的 URL.虽然您也可以使用 rewrite/redirect 规则将 yourapp.com/api
重定向到 ws.yourapp.com
,但是您正在使用的网络套接字客户端必须支持重定向(因为它不是网络套接字规范的必需部分) .
有一个 rewrite feature 允许将对 firebase 静态站点的请求写入云 运行 函数:
"hosting": {
...
"rewrites": [{
"source": "/api",
"run": {
"serviceId": "my-api",
}
}]
}
然而,尚不清楚这是否适用于 websocket 请求。
我可以确认重写部分工作正常,因为 websocket 请求没有被 **
重写规则捕获。用邮递员测试似乎请求 returns“404 未找到”到初始 http 升级请求而不是“101 切换协议”。
将 websocket 直接连接到云 运行 域工作正常。
Firebase Hosting 可以比作 CDN 而不是基本代理。当用户针对它发出请求时,将根据 documented order for response handling 处理响应,并将每个请求作为 HTTP(S) 请求处理。
如果使用 Cloud Functions 或 Cloud 运行 对 serve dynamic content 的重写,将根据 Firebase Hosting 的内部缓存 CDN 检查请求,如果存储的响应不是可用或已过期。根据我对其工作原理的理解,这些步骤是通过多个内部请求实现的,而不是直接通过流式传输客户端请求。
相反,您将屏蔽 Cloud Run with a custom domain(在撰写本文时处于预览状态),例如 ws.yourapp.com
,这样您就可以跳过 Firebase 托管的 CDN,但仍然有一个用户友好的 URL.虽然您也可以使用 rewrite/redirect 规则将 yourapp.com/api
重定向到 ws.yourapp.com
,但是您正在使用的网络套接字客户端必须支持重定向(因为它不是网络套接字规范的必需部分) .