请教前辈们,同一用户多次连接怎么处理。

gaofeiok

场景:
       每个终端连接上服务器后,服务器发送信号连接成功信号给终端,终端返回该用户在本应用中的唯一ID,服务器收到后将分配的client与应用的ID邦定(gatwayworker的UID)。
        为了保证终端本地数据的准确性,如果有另一台终端上线,就会被踢出。这个已经实现了,可以确认没问题。
问题:
       同一终端可能会因为网络等其它原因,在短时间内再次请求client。出现了同一个终端有两个或多个client号,如果关闭旧的client,这台终端也会被关闭离线,如果不关,这台终端就会收到两次同样的信号。
       请问这种情况如何处理,是我的逻辑不对,还是gatewayworker有处理的办法我没有找到。各们大神支支招。     

3387 3 0
3个回答

肥臣

根据连接ID进行关闭,而不是根据client进行关闭。可以做到精准关闭。

应用的ID邦定(gatwayworker的UID)

  • gaofeiok 2019-02-21

    client_id与uid是一对多的关系,关了uid不也关了终端?我的逻辑处理是:一个应用中的ID对应一个gatewayworker中的uid,关了uid也等于关了终端。

肥臣


我理解大概是这个意思,用户A通过客户端①与服务端建立连接a,同时有可能用户A因为某些原因通过客户端①与服务端建立了连接b。但是系统不允许用户A同时使用客户端①建立两个连接。那么只要将建立的(a,b)中关掉一个即可,不知道我表达的清楚没有。

  • gaofeiok 2019-03-03

    逻辑是这样的,但关掉a或者b,客户端就与服务器断开连接了,只关掉其中一个,连接就断开了,我是在服务器端关闭连接.不关时,服务器就会发送两次消息.目前是在客户端判断消息是否重叠.但这样明显不合适.

gaofeiok

是这样的,但关了a或b,客户端也断了,需要重连.我是在服务器端关的.如果不关会发重复消息.目前是在客户端判断消息是否重叠,但这不是最好处理方案.

  • sixhao 2019-03-08

    我的也是这个问题 ,请问你解决了吗?怎么解决?

年代过于久远,无法发表回答
🔝