当前位置: 首页 > 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.xdnf.cn/news/1186597.html

相关文章:

  • Java 流(Stream)分类、用途与性能分析
  • 黑马点评01 - 项目介绍 短信登录
  • 【C#补全计划:类和对象(七)—— 重写虚方法】
  • 屏幕适配--像素篇
  • C/C++---I/O性能优化
  • Linux的磁盘存储管理实操——(下二)——逻辑卷管理LVM的扩容、缩容
  • 小白如何认识并处理Java异常?
  • gig-gitignore工具实战开发(三):gig add基础实现
  • 双指针算法介绍及使用(下)
  • which soffice soffice not found
  • OpenRLHF:面向超大语言模型的高性能RLHF训练框架
  • 机器学习之knn算法保姆级教学
  • SEC_FirePower 第二天作业
  • Keepalived 原理及配置(高可用)
  • ubuntu22.04.4锁定内核应对海光服务器升级内核无法启动问题
  • 【Docker项目实战】在Docker环境下部署go-file文件分享工具
  • 5G基站信号加速器!AD8021ARZ-REEL7亚德诺 超低噪声高速电压放大器 专利失真消除技术!
  • 从零开发Java坦克大战:架构设计与难点突破 (下)
  • C++ 多线程同步机制详解:互斥锁、条件变量与原子操作
  • 电子电气架构 --- 车载软件与样件产品交付的方法
  • TDengine 转化函数 TO_TIMESTAMP 用户手册
  • Python 程序设计讲义(21):循环结构——while循环
  • Leetcode力扣解题记录--第21题(合并链表)
  • C++ 常用的数据结构(适配器容量:栈、队列、优先队列)
  • [NPUCTF2020]ReadlezPHP
  • 基于深度学习的图像分类:使用Vision Transformer(ViT)实现高效分类
  • 【RDMA】Adapters PRM Mellanox Adapters Programmer’s Reference mellanox网卡编程手册0.52
  • Lua(数据库访问)
  • 【开发杂谈】用AI玩AI聊天游戏:使用 Electron 和 Python 开发大模型语音聊天软件
  • Web攻防-业务逻辑篇密码找回重定向目标响应包检验流程跳过回显泄露验证枚举