websocket主动关闭连接的方式

在即时通讯中,为了实现一个账户,同一时刻只能在一台设备上登录。

例如:有两台手机A和B,账号Account

  当Account已经在手机A上登录,如果要在手机B上登录账号Account,就必须强制断开手机A与服务器建立的WebSocket连接。而且在断开连接之前需要往手机A返回一些信息,表示已经被另外一个用户强制登录了。

刚开始的时候,采用的断开方式是,获取到建立WebSocket链接所产生的MessageInbound对象,然后再通过MessageInbound对象获取到WsOutbound对象,最后再通过WsOutbound对象调用close方法关闭连接。

这种方式的话即使在调用之前,先调用flush刷新输出流,手机A还是会收不到信息。


解决的方法是:在自己实现的MessageInbound中再写一个public方法,调用onClose方法,因为onClose是protected的,在包外或者不是它的子类就不能访问它,所以才要写一个public方法。

public void closeWebSocket(){
        this.onClose(1);
    }


在需要强制退出的地方调用以上函数就可以了。


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值