当前位置: 首页 > news >正文

继承接口实现websocke,实现任意路径链接

1:继承接口实现websocket(这样的写法,任何的路径都可以连接过来,如果使用@ServerEndpoint这样的方式的话,就是现在匹配的路径才可)

package com.demo.websocket;import org.java_websocket.WebSocket;
import org.java_websocket.handshake.ClientHandshake;
import org.java_websocket.server.WebSocketServer;
import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import java.io.IOException;
import java.net.BindException;
import java.net.InetSocketAddress;@Component
public class CustomWebSocketServer extends WebSocketServer {private static int port = 7788;public CustomWebSocketServer() {super(new InetSocketAddress(port));super.start();System.out.println("WebSocket 服务已启动,端口:" + port);}@PreDestroypublic void destroy() throws IOException, InterruptedException {super.stop();System.out.println("WebSocket 服务已关闭");}@Overridepublic void onOpen(WebSocket conn, ClientHandshake handshake) {System.out.println("客户端已连接");}@Overridepublic void onClose(WebSocket conn, int code, String reason, boolean remote) {System.out.println("客户端已断开");}@Overridepublic void onMessage(WebSocket conn, String message) {System.out.println("收到消息: " + message);try {Thread.sleep(2000);conn.send("hi,客户端"); // 回声测试} catch (InterruptedException e) {e.printStackTrace();}}@Overridepublic void onError(WebSocket conn, Exception ex) {if (ex instanceof BindException) {System.err.println("端口占用,请检查配置");} else {ex.printStackTrace();}}@Overridepublic void onStart() {System.out.println("WebSocket 服务初始化完成");}}

2:pom.xml配置

    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.java-websocket</groupId><artifactId>Java-WebSocket</artifactId><version>1.5.1</version> </dependency></dependencies>
http://www.dtcms.com/a/297259.html

相关文章:

  • 可以修改公网ip吗
  • X-plore File Manager v4.34.02 修改版:安卓设备上的全能文件管理器
  • 海云安斩获“智能金融创新应用“标杆案例 彰显AI安全左移技术创新实力
  • 快速入门Socket编程——封装一套便捷的Socket编程——Reactor
  • 【AMD平台】编译llama.cpp
  • 【问题集】——RAG项目实战:LangChain 0.3集成 Milvus 2.5向量数据库,构建大模型智能应用
  • GTSuite许可与网络安全
  • 每天算法刷题Day53:7.25:leetcode 栈5道题,用时1h35min
  • 广东省省考备考(第五十六天7.25)——常识:科技常识(听课后强化训练)
  • 输电线路观冰精灵在线监测装置:科技赋能电网安全的新利器
  • 微算法科技(NASDAQ:MLGO)采用分布式哈希表优化区块链索引结构,提高区块链检索效率
  • 在FreeBSD系统下使用llama-cpp运行飞桨开源大模型Ernie4.5 0.3B(失败)
  • C++ atomic与内存顺序 【转】
  • 从双碳到零碳园区:安科瑞微电网系统的应用与价值
  • Javaweb————学习javaweb的预备知识
  • 【数据结构】长幼有序:树、二叉树、堆与TOP-K问题的层次解析(含源码)
  • 【js】Proxy学习笔记
  • 【高等数学】第五章 定积分——第四节 反常积分
  • Colab中如何临时使用udocker(以MinIO为例)
  • 华为云DRS实现Oracle到GaussDB数据库迁移的全流程技术方案
  • Android Studio 自带的官方模拟器,ABI这一列是x86_64,xABI这一列是arm64-v8a
  • 【面试场景题】外卖点餐系统设计思路
  • mysql 和oracle的选择
  • Android Studio 2024 内嵌 Unity 3D 开发示例
  • Oracle转Mysql建表脚本
  • Android studio自带的Android模拟器都是x86架构的吗,需要把arm架构的app翻译成x86指令?
  • 【Android Studio】安装Trae插件后Android Studio 启动崩溃问题处理
  • 瑞萨电子RA-T MCU系列新成员RA2T1——电机控制专家
  • CPU(中央处理器)和GPU(图形处理器)的区别
  • vscode npm run build打包报ELIFECYCLE