请教一般后端发送给前端消息该怎么实现

2020-08-17 10:33:19 +08:00
 rqxiao

场景:用户在扫码支付成功后,第三方支付方会异步回调本系统内的一个地址,希望收到回调返回成功后,给前端发送 您已支付成功订单 xx 元!

之前没做过消息发送到前端这方面的,想请教下简单的或者常用的做法是什么,就用 websocket ? 现在后台是 springboot,前端是 ios

8191 次点击
所在节点    Java
52 条回复
ebony0319
2020-08-17 14:24:32 +08:00
BBCCBB
2020-08-17 14:37:27 +08:00
场景简单的话 server sent events 应该是简单靠谱的方案. 好像 twitter 都在用.
cnscorpions
2020-08-17 15:56:40 +08:00
三种方案:
1. Long polling
2. WebSocket
3. Server Sent Events

链接地址: https://javascript.info/

正好我也有类似需求
edk24
2020-08-17 16:20:57 +08:00
只有这一个场景的话 可以考虑轮询

二维码扫码登录也是用的轮询
dallaslu
2020-08-17 17:22:55 +08:00
轮询最简单,但是短轮询有可能有一点延迟感。长轮询会好一些。Spring Boot 用可以换 Undertow,用上 WebAsyncTask
gitjavascript
2020-08-17 17:30:55 +08:00
这种东西轮询就好了,没必要搞麻烦的
wysnylc
2020-08-17 17:50:28 +08:00
websocket-socketio
不要使用 http 轮询,不及时而且浪费资源,最终还是得升级成 websocket 还不如一步到位
zachlhb
2020-08-17 17:51:23 +08:00
iOS 可以做推送,APP 上收到推送后进行相应的处理
zhlssg
2020-08-17 17:58:30 +08:00
long polling 的性能并不比轮询好
OHyn
2020-08-17 18:01:08 +08:00
轮循最简单,有点追求就上 websocket
OHyn
2020-08-17 18:01:40 +08:00
对了,还有 server sent events,这个最合适。
bagel
2020-08-17 18:03:18 +08:00
说 Server Sent Events 的,没看到是 iOS 吗。都不在浏览器里。
las917vki
2020-08-17 18:10:04 +08:00
長轮询就行了。
sprit
2020-08-17 18:18:42 +08:00
不能叫前端叫客户端
BoarBoar
2020-08-17 18:45:04 +08:00
轮询实现简单,性能低。ws 性能高但实现相对复杂,特别是如果其他场景都是 http 的话,需要重写一些组件比如鉴权,为了一个性能要求不高的场景显然是不划算的
devliu1
2020-08-17 23:08:09 +08:00
补充一下,SSE 只是一种传输方式,和浏览器没有必然的联系。
ccraohng
2020-08-18 07:56:09 +08:00
观察 大厂们相关服务,云后台,类似的都是轮训。性能低从何谈起
Nich0la5
2020-08-18 09:11:52 +08:00
虽然轮训的确性能低,但大厂都在用
pkoukk
2020-08-18 09:59:35 +08:00
这种情况就是典型的轮询
CantSee
2020-08-18 09:59:52 +08:00
必然是轮询!让他循环查询,间隔个一两秒!

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

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

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

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

© 2021 V2EX