通过WebSocket建立长链接实时获取数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31588719/article/details/70945765

     前段时间公司在做的一个项目,需要实时获取到最新的行情数据,行情数据每秒更新,当时考虑过用轮询方式获取,但是稍微推敲,很是不妥。当用户量多了,每个客户端都要去轮询服务器,给服务器造成的压力很大大,而且用户的体验也不好,频繁的请求也会导致手机发热,电量耗得很快。后来方案是:搭建一个webSocket中转服务器去做轮询拿到数据,然后将数据进行分发。后台的哥们搭好webSocket服务器后,给了一个链接地址,格式是ws://xxx.xxx.xxx:端口号。我通过导入一个jar包,调用相关的api进行了链接。

    
  
WebSocketConnection connection = new WebSocketConnection(); //创建WebSocket链接对象
connection.connect(WEBSCOKET_IP,webSocketHandler);//调用connect链接方法,第一个参数为链接地址                                                    第二个参数为回调对象

WebSocketHandler webSocketHandler = new WebSocketHandler() {//回调对象,重写三个重要的方法.

    @Override
    public void onOpen() {//这个方法为打开连接时会走,即刚开始建立链接,可在这里向服务器发送数据(具体看个人需求
        super.onOpen();
        connection.sendTextMessage("data");//调用此方法向服务器发送数据,也可以发送字节数组
    }

    Override
    public void onTextMessage(String payload) {//这个是建立链接后接收到数据会回调的方法
        super.onTextMessage(payload);   //数据都在这个参数payload里面,这里就拿到了数据,
        Log.e("data", payload);  //当然,心跳包也会在这里,可在这判断下,是我们有用的数据就解析、处理,心跳包就不管
    }

    Override
    public void onClose(int code, String reason) {//见名知意,这个就是与webSocket断开链接后的 回调的方法,参数里面带了错误的信息和状态码        
        super.onClose(code, reason);
        Log.e("data", "code" + code + "reason" + reason);
    }

    这样就让安卓与WebSocket建立了长链接,看,是不是很简单。至于jar包这里不能添加附件,需要的直接回复邮箱我直接发。

 
 
 
 
 
 
 

猜你喜欢

转载自blog.csdn.net/qq_31588719/article/details/70945765