Java教程

java 实现websocket当客户端连接服务器以及自动重连的方式

本文主要是介绍java 实现websocket当客户端连接服务器以及自动重连的方式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

不是项目用到了 也不会去研究这个东西 首先引入jar包 目前的最新版本是1.5.2

GetHub源码地址:GitHub - TooTallNate/Java-WebSocket: A barebones WebSocket client and server implementation written in 100% Java.

        <dependency>
            <groupId>org.java-websocket</groupId>
            <artifactId>Java-WebSocket</artifactId>
            <version>1.5.2</version>
        </dependency> 

 

首先是websocket的搭建 这个可以说是非常简单的了 直接上代码 没啥好说的 

package com.config;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
import org.springframework.beans.factory.annotation.Autowired;

import java.net.URI;
public class MyWebSocketClient extends WebSocketClient {public static boolean WEBSTATUS = false;

  //连接
    public MyWebSocketClient(URI serverUri) {
        super(serverUri);
    }
  //打开连接
    @Override
    public void onOpen(ServerHandshake serverHandshake) {
        WEBSTATUS = true;
    }

    @Override
    public void onMessage(String s) {
        //接收消息
    }

    @Override
    public void onClose(int i, String s, boolean b) {
        WEBSTATUS = false;
    }

    @Override
    public void one rror(Exception e) {
        WEBSTATUS = false;
    }
  
  //推送消息
    public void sendMsg(String msg){
        if(WEBSTATUS){
            send(msg);
        }
    }
}

这里面有个参数  WEBSTATUS  这个是用来记录当前websocket的状态的 因为是作为客户端 就不考虑多个的问题

然后 就是重点了 自动重连

@Bean
    public WebSocketClient webServiceClient() {
        try {
            MyWebSocketClient mWebSocketClient = new MyWebSocketClient(new URI("ws://127.0.0.1:8080/websocket"));
            mWebSocketClient.connect();
            //如果断线,则重连并重新发送验证信息
            Timer t = new Timer();
            t.scheduleAtFixedRate(new TimerTask() {
                @Override
                public void run() {
                    if (!MyWebSocketClient.WEBSTATUS) {
                        try {
                            MyWebSocketClient mWebSocketClient = new MyWebSocketClient(new URI("ws://127.0.0.1:8080/websocket"));
                            mWebSocketClient.connect();
                        } catch(URISyntaxException e){
                            e.printStackTrace();
                        }
                    }
                }
            },2000,5000);//5秒执行一次 然后休息2秒
            return mWebSocketClient;
        } catch(URISyntaxException e){
            e.printStackTrace();
        }
        return null;
    }

首先是实例化对象 设置服务器websocket的地址 然后connect() 连接

连接成功后会调用onOpen 这时候会把状态改为true 表示已经连接上 

如果没连接上服务器 或者服务器断开和连接异常 那么状态会变为false 

线程里面的方法会每隔7秒左右执行一次 执行的时候会根据状态判断是否需要连接websocket

这样子就实现了websocket客户端自动重连

这篇关于java 实现websocket当客户端连接服务器以及自动重连的方式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!