WebSocket实战之五JSR356

一、前言

前几篇WebSocket例子服务端我是用NodeJS实现,这一篇我们用Java来搭建一个WebSocket服务端,从2011年WebSocket协议RFC6455发布后,大多数浏览器都实现了WebSocket协议客户端的API,而对于服务端Java也定义了一个规范JSR356,即Java API for WebSocket规范,很多Web容器如Tomcat、Jetty等新版本都支持该规范。

二、JS R356

JSR356是JavaEE7标准的一部分,所有支持JavaEE7标准的应用服务器都有JSR356的WebSocket实现。

注:上面JSR356图上写成JSR365了,懒得改图了。

JSR36可以采用注解或接口来实现WebSocket生命周期方法的实现。

1、注解方式

  • @ServerEndpoint("/websockets")

告诉容器此类是WebSocket服务端端点,

使用路径/websockets连接。

  • @ClientEndpoint

告诉容器此类是WebSocket客户端端点。

  • @OnOpen

一旦建立了WebSocket连接就会创建Session,

并调用该注解的方法

  • @OnMessage

对方端点发送消息过来,调用该注解的方法。

  • @OnClose

对方端点关闭连接时会调用该注解的方法。

  • @OnError

如果异常错误就会调用该注解的方法。

2、实现接口方式

继承javax.websocket.Endpoint实现命令周期各个方法。

WebSocket JavaAPI支持消息类型

  • 文本消息

  • 二进制消息

  • pingpong消息

三、一个简单例子

使用内嵌Tomcat来运行WebSocket服务,webSocket依赖于容器的实现。

1、创建项目

使用IDEA创建 webapp maven工程。

2、pom.xml

添加Websocket以及内嵌Tomcat依赖。

3、Tomcat启动类

4、WebSocketServer类

4、客户端代码

使用 WebSocket实战之一 代码 ,然后就可以向相互发送消息了。

四、SpringB oot整合WebSocket例子

使用SpringBoot整合WebSocket也很简单,因为Springboot内置了Tomcat。

1、pom.xml

2、WebSocket配置

3、WebSocketServer

相关推荐
聚铭网络1 天前
聚铭网络成功入围徐州市大数据集团2026年业务类合作供应商名录(第一批次)
大数据·网络
hy____1231 天前
Linux_网络基础3
linux·服务器·网络
Striver-Diligent1 天前
GenNP: 一种低门槛且功能强大的网络性能数据生成器
网络·计算机网络·并行·网络仿真·网络性能估计·离散事件仿真
带娃的IT创业者1 天前
Weclaw 请求路由实战:一个 request_id 如何在 800 个并发连接中精准找到目标浏览器?
python·websocket·fastapi·架构设计·实时通信·openclaw·weclaw
望未来无悔1 天前
实时传输的选择方案
websocket
我是唐青枫1 天前
C#.NET ReadOnlySequence 深入解析:多段内存遍历与零拷贝协议解析
网络·c#·.net
带娃的IT创业者1 天前
WeClaw 心跳与重连实战:指数退避算法如何让 WebSocket 在弱网环境下的连接成功率提升 67%?
python·websocket·网络协议·算法·fastapi·实时通信
Insist7531 天前
案例二---集群修改物理IP和VIP
运维·网络·数据库
qq_411262421 天前
在建立udp连接的时候,有时候能成功,有时候AT 指令返回+ERRNO:0x70
网络·网络协议·udp
专家大圣1 天前
告别智能家居品牌壁垒✨ Home Assistant+cpolar 让远程控家更省心
网络·docker·智能家居·内网穿透·cpolar