如何使用websocket实现非事件驱动的推送信息?

D調の學痞
  • 392

我的即时推送服务包含禁止多端重复登录,即已登录用户在其它端再次登录时,则T原来登录的下线。websocket如何实现?假设前后登录都不在一台服务器上,这个如何做通知机制来触发推送T人下线信息?,服务端用swoole,node.js都可以。

比如用户登录后与A服务器建立连接,但用户又在另一端登录,B服务器接收到请求了,这时如何实现把A服务器上的连接T掉?使用事件机制实现不了了。因为事件监听不了,不在同一台服务器上?

回复
阅读 1.8k
2 个回答

首先客户端创建成功,向服务的发送建立连接请求。经过三次握手,连接建立成功。服务端把所有链接保存到一个集合中。
客户端在创建链接成功后,向服务的发送数据,进行用户登录。服务的接收到登录事件,登录用户,取到uid。把登录成功的链接放到一个map中,key是uid,在放进去之前可以判断下key是否存在,存在就发送通知给这个key对应的客户端链接。

我觉得这完全是登录验证的事情啊,用户登录完服务器授权一个token,在另一个地方登录则依然授权一个新的token,不过服务器只维护最新的token,而用户在登录状态下发起的后台服务器调用不就是验证这个token是不是合法,不合法自然调用不了接口,这时候服务器告诉前端登录不通过需要重新登录,前端收到后则直接跳转到登录页面,这不就是所谓的T人下线。

宣传栏