• Java客户端调用Websocket服务端(Springboot)


    代码示例

    步骤1

    今天使用Java客户端调用Websocket服务端
    以下是客户端代码:

    import com.sinosoft.springbootplus.lft.business.dispatch.map.application.service.impl.LawEnforceSosServiceImpl;
    import com.sinosoft.springbootplus.lft.business.dispatch.map.dto.LawEnforceSosAddDto;
    import lombok.extern.slf4j.Slf4j;
    import org.apache.commons.lang3.StringUtils;
    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    import org.jsoup.nodes.Element;
    import org.jsoup.select.Elements;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    
    import javax.websocket.*;
    import java.nio.ByteBuffer;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    
    @ClientEndpoint
    @Component
    @Slf4j
    public class WebSocketClient {
    
        private static LawEnforceSosServiceImpl lawEnforceSosService;
    
        @Autowired
        public void setLawEnforceSosServiceImpl(LawEnforceSosServiceImpl enforceSosService) {
            lawEnforceSosService = enforceSosService;
        }
    
        @OnOpen
        public void onOpen(Session session) {
            System.out.println("Connected to server");
            log.info("websocket链接打开!Connected to server");
            try {
                String message = "你好";
                // Send a text message to the server
                session.getBasicRemote().sendText(message);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        @OnMessage
        public void onMessage(String message) throws ParseException {
     		log.info("收到的消息");
        }
    
        @OnMessage
        public void binaryMessage(Session session, ByteBuffer msg) {
    		log.info("收到的消息");
        }
        @OnMessage
        public void pongMessage(Session session, PongMessage msg) {
    		log.info("收到的消息");
        }
    
        @OnClose
        public void onClose() {
            log.info("websocket链接关闭!Close to server");
        }
    
        // ...
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63

    步骤2

    在项目启动时,开启Websocket服务

    import com.sinosoft.springbootplus.lft.business.dispatch.map.common.WebSocketClient;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.stereotype.Component;
    
    import javax.websocket.ContainerProvider;
    import javax.websocket.WebSocketContainer;
    import java.net.URI;
    
    /**
     * @Author mc
     * @Date 2024/01/29
     * @Version 1.0
     */
    
    @Component
    @Slf4j
    public class MyDeviceLineRunner implements CommandLineRunner {
        @Override
        public void run(String... args){
            new Thread(() -> {
                log.info("开始===调用websocket接口");
                try {
                    WebSocketContainer webSocketContainer = ContainerProvider.getWebSocketContainer();
                    URI uri = null;
                    uri = new URI("这里是地址!");
                    webSocketContainer.connectToServer(WebSocketClient.class, uri);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            });
                    .start();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
  • 相关阅读:
    详细图解 Netty Reactor 启动全流程 | 万字长文 | 多图预警
    【408考点之数据结构】二叉树的概念与实现
    vue项目不用重新打包即可以修改项目ip
    6个使用的Python脚本
    scrapyd-完整细节
    操作数组对象
    智慧工厂的未来:数字孪生的多重应用
    【LeetCode 热题 100】动态规划 专题(动态规划 ==> 找子问题!)
    python大数据毕业设计选题题目大全
    数据血缘分析-Python代码的智能解析
  • 原文地址:https://blog.csdn.net/mcband/article/details/136287385