java 作为websocket客户端连接服务端

素颜马尾好姑娘i 2022-09-16 15:30 444阅读 0赞
  1. 1. 作为客户端 连接服务端
  1. 发送心跳,断线重连

    package com.api.cloudenergyweb_server.config;

    import com.api.Engine.PushServer;
    import com.api.cloudenergyweb_server.config.socket.MyWebSocketHandler;
    import com.api.cloudenergyweb_server.utils.StringUtilsCustom;
    import lombok.extern.slf4j.Slf4j;
    import net.sf.json.JSONObject;
    import org.java_websocket.client.WebSocketClient;
    import org.java_websocket.handshake.ServerHandshake;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.stereotype.Component;

    import java.net.URI;
    import java.util.Map;

    /**

    • 客户端,连接’数据层’服务端
      */
      @Slf4j
      public class WebSocketClientConfig {

      @Value(“${cloud.db.server.appid}”)
      private String appid;

      @Value(“${cloud.db.server.websocket.url}”)
      private String url;

      @Bean
      public WebSocketClient webSocketClient() {

      1. try {
      2. WebSocketClient webSocketClient = new WebSocketClient(new URI(url + appid)) {
      3. @Override
      4. public void onOpen(ServerHandshake handshakedata) {
      5. log.trace("[trace] 连接成功");
      6. }
      7. @Override
      8. public void onMessage(String message) {
      9. try{
      10. log.trace("[websocket] 收到消息={}",message);
      11. if(StringUtilsCustom.isBlank(message) && !message.equals("first") && !message.equals("HeartBeat")){
      12. try {
      13. JSONObject json = JSONObject.fromObject(message);
      14. PushServer.getInstance().pushMsg(json.getString("iot"), json.getJSONObject("msgData"), json.getString("msgKey"));
      15. Map<String, Object> data = json.getJSONObject("msgData");
      16. String equipment = data.get("equipment") + "";
      17. if(StringUtilsCustom.isBlank(equipment)){
      18. MyWebSocketHandler.getInstance().sendRealtimeVarMessageByEquipment(json.getString("iot"), equipment, message);
      19. }
      20. }catch (Exception e){
      21. }
      22. }
      23. }catch (Exception e){
      24. log.error(e.getMessage(), e);
      25. }
      26. }
      27. @Override
      28. public void onClose(int code, String reason, boolean remote) {
      29. log.trace("[websocket] 退出连接");
      30. }
      31. @Override
      32. public void onError(Exception ex) {
      33. log.trace("[websocket] 连接错误={}",ex.getMessage());
      34. }
      35. };
      36. webSocketClient.connect();
      37. new Thread(new Runnable() {
      38. public void run() {
      39. System.out.println("Runnable running..");
      40. }
      41. }) {
      42. public void run() {
      43. while (true){
      44. try{
      45. Thread.sleep(180000);
      46. webSocketClient.send("HeartBeat");
      47. }catch (Exception e){
      48. webSocketClient.reconnect();
      49. }
      50. }
      51. }
      52. }.start();
      53. return webSocketClient;
      54. } catch (Exception e) {
      55. e.printStackTrace();
      56. }
      57. return null;

      }
      }

发表评论

表情:
评论列表 (有 0 条评论,444人围观)

还没有评论,来说两句吧...

相关阅读