请教后端大佬,订阅第三方的 webscoket,如何返回给客户端?

7 天前
 firhome
我是前端,会点 node 。

现在有个需求场景:根据用户订阅条件,调用第三方的 webscoket 链接,需要把第三方的 webscoket 链接返回的数据整理一下然后再返回给客户端界面。

我想的实现方式 A:

1.创建个 post 请求,来接收用户的订阅参数,然后服务端去订阅,服务端处理好数据后存到数据库。
2.创建个 get 请求,用户刷页面后来获取数据库中的数据展示在页面上。

实现方式 B:
1. 同 A1.
2. 服务端也创建个 ws ,客户端直接通过 ws 连接。当有数据处理的时候就推送给客户端


A 方式不够即时(也可以通过定时请求)
B 方式的话,我担心服务端开销很大, 毕竟又要连第三方的 ws ,又要提供 ws 服务给客户端


请问大家,该怎么实现比较好呢?
1033 次点击
所在节点    程序员
9 条回复
LeegoYih
7 天前
性能瓶颈在数据库,ws 开销不大,普通配置服务器建立几万个连接没什么问题。
ljtfdt
7 天前
B 方式,第三方的 ws 应该共用一个链接就可以了,所以只用关心客户端的连接数,客户端不多的话,性能应该不是问题
lisxour
7 天前
那必须是 b 啊
tubinorg
7 天前
你可以认为 ws 就是 http 的 tcp 没有断开( http 升级),一直保持连接,所以基本一样
可以在逻辑处理上断开,比如心跳,无请求数据,主动断开这个 tcp
iOCZS
7 天前
不需要双工的话,还可以 sse
gongquanlin
7 天前
B ,A2 的轮询速度快反而压力更大;
之前用 php 实现的某接口,2 秒轮训一次,上线之后服务器 cpu 马上被打崩;后来换成 go 的 ws ,维持在 3%左右的 cpu 占用
guanzhangzhang
6 天前
server 一个 ws client ,订阅后把信息存库或者广播给所有前端 ws client 即可。
我最近就有个类似的,是前端 websocket client 连 ws server ,ws server 是我 go 写的,它包含是一个 tcp client 获取数据,前端页面可以控制和接收信息,最终由 tcp client 发出去。
skallz
6 天前
看数据即时性要求了,如果要求不高,就轮询完事,要求高的话,用 sse 喽
skallz
6 天前
@gongquanlin 一般都是要求五秒及以上才会考虑轮询,哈哈,不过这个时间间隔也足够满足绝大部分场景了,除非数据实时性要求非常高

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1095137

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX