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

112 天前
fingerxie  fingerxie

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

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

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

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

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

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

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

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

© 2021 V2EX