IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> java 作为websocket客户端连接服务端 -> 正文阅读

[网络协议]java 作为websocket客户端连接服务端

1. 作为客户端 连接服务端

? 2.? 发送心跳,断线重连

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() {
        try {
            WebSocketClient webSocketClient = new WebSocketClient(new URI(url + appid)) {

                @Override
                public void onOpen(ServerHandshake handshakedata) {
                    log.trace("[trace] 连接成功");
                }

                @Override
                public void onMessage(String message) {
                    try{
                        log.trace("[websocket] 收到消息={}",message);
                        if(StringUtilsCustom.isBlank(message) && !message.equals("first") && !message.equals("HeartBeat")){
                            try {
                                JSONObject json = JSONObject.fromObject(message);
                                PushServer.getInstance().pushMsg(json.getString("iot"), json.getJSONObject("msgData"), json.getString("msgKey"));
                                Map<String, Object> data = json.getJSONObject("msgData");
                                String equipment = data.get("equipment") + "";
                                if(StringUtilsCustom.isBlank(equipment)){
                                    MyWebSocketHandler.getInstance().sendRealtimeVarMessageByEquipment(json.getString("iot"), equipment, message);
                                }
                            }catch (Exception e){
                            }
                        }
                    }catch (Exception e){
                        log.error(e.getMessage(), e);
                    }
                }

                @Override
                public void onClose(int code, String reason, boolean remote) {
                    log.trace("[websocket] 退出连接");
                }

                @Override
                public void onError(Exception ex) {
                    log.trace("[websocket] 连接错误={}",ex.getMessage());
                }
            };
            webSocketClient.connect();
            new Thread(new Runnable() {
                public void run() {
                    System.out.println("Runnable running..");
                }
            }) {
                public void run() {
                    while (true){
                        try{
                            Thread.sleep(180000);
                            webSocketClient.send("HeartBeat");
                        }catch (Exception e){
                            webSocketClient.reconnect();
                        }
                    }
                }
            }.start();
            return webSocketClient;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-10-24 15:11:52  更:2021-10-24 15:12:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:21:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码