服务端如何实时同步状态变化?

21 天前
 fingerxie

最近在做扫码登录,这个功能在展示二维码以后,会与其中一个认证服务的实例建立长连接,实时反馈二维码状态变更。

在单实例情况下,这很好实现,但是多实例的话,状态变化时,就需要通知到对应实例。但是如何通知是一个问题。

V 友们,各位大佬们,有什么好的方案去解决这个问题吗?

1800 次点击
所在节点    程序员
23 条回复
opengps
21 天前
不需要解决,本身就是得支持多个长连接
esee
21 天前
非得长连接?轮询不行么?
spritecn
21 天前
这个网关的会话保持就解决了吧
fcten
21 天前
长连接接入需要一个 session 服务维护每个会话对应的连接
扫码登录轮询就行了
fingerxie
21 天前
@spritecn 不行吧,因为扫码的是手机端,并不能保证请求同一个服务吧?
spritecn
21 天前
@fingerxie 网关的会话保持一般无非就是 iphash 或是插 session 的思路,有啥不行
vZexc0m
21 天前
轮询不会比长连接消耗大
jingrui
21 天前
前端轮训,简单高效,登录并发也不会太高
cat
21 天前
连微信官网的扫码登录都是轮询…… https://mp.weixin.qq.com/ 折腾长连接干啥呀
cccssss
21 天前
redis publish ?消息队列广播?
onceMore
21 天前
直接轮询,方案越简单,可靠性越高
ZeekChatCom
21 天前
生成个 id 啊
shadowyue
21 天前
轮询还是长链接要看你业务的契合度。
至少前几年,我专门研究了下,淘宝的扫码登录就是轮询,微信的就是长链接。
非常契合这两家的业务基础。淘宝就是查询多,微信作为聊天软件就是擅长维持长链接。
hellomsg
21 天前
一两秒一个轮询对用户来说也不是不可以,用户体验没差别
allecnm
21 天前
微信支付宝都是轮询
sujin190
21 天前
其实这种还是使用 long polling 轮询实现更简单快捷,搞个异步 IO 的框架,挂起实现不要太简单
hellomsg
21 天前
不说你业务的实现方式,只说你关心的点,我猜是在分布式环境中,客户端之间如何通信?就是消息路由。要么广播;要么有个中心负责转发给客户端所在的服务器,再下发给客户端。中心可以是消息队列。
hellomsg
21 天前
简单轮询的方式,就是查数据库,数据库就是中心,主动去取。
fingerxie
21 天前
@hellomsg 是这样,我也考虑采用消息队列来做。利用广播消息的机制实现。不过我在想有没有什么更好的方案
spicy777
21 天前
之前做的扫码登录都是用的轮询

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

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

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

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

© 2021 V2EX