SpringBoot3集成WebSocket的全过程.docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

SpringBoot3集成WebSocket的全过程

目录一、简介二、工程搭建1、工程结构2、依赖管理三、WebSocket用法1、示意图2、API参考四、总结

一、简介

WebSocket通过一个TCP连接在客户端和服务器之间建立一个全双工、双向的通信通道,使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据,在WebSocket的API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

【基于Postman工具的WebSocket交互】

Connectedtows://:8088/web/socket/msg

HandshakeDetails

RequestURL::8088/web/socket/msg

RequestMethod:GET

StatusCode:101

RequestHeaders

Sec-WebSocket-Version:13

Sec-WebSocket-Key:5Qrs8JeRLsiY9G/PRJUocQ==

Connection:Upgrade

Upgrade:websocket

Sec-WebSocket-Extensions:permessage-deflate;client_max_window_bits

Host::8088

ResponseHeaders

Upgrade:websocket

Connection:upgrade

Sec-WebSocket-Accept:E3aFw2bBzxByPCynmQ7lZ+7BgsU=

Sec-WebSocket-Extensions:permessage-deflate;client_max_window_bits=15

二、工程搭建

1、工程结构

2、依赖管理

在starter-websocket的依赖中,涉及到spring框架中两个关系较为密切的组件,分别是websocket和messaging组件。

!--WebSocket--

dependency

groupIdorg.springframework.boot/groupId

artifactIdspring-boot-starter-websocket/artifactId

version${spring-boot.version}/version

/dependency

三、WebSocket用法

1、示意图

在下面的案例中,大致模拟这样一个流程,三个客户端分别和服务端建立连接,然后进行客户端之间的会话通信。

2、API参考

这里通过4个核心的方法注解,分别处理会话的不同动作,比如连接的建立和关闭,通信交互和错误处理;在实际的应用场景中,需要在通信方法中设计更多的指令来应对不同的业务场景。

@ServerEndpoint(/web/socket/msg)

publicclassMsgWebSocket{

privatestaticfinalConcurrentHashMapString,Sessionsessions=newConcurrentHashMap();

privatestaticfinalAtomicIntegeronlineCount=newAtomicInteger(0);

*建立连接调用的方法

@OnOpen

publicvoidonOpen(Sessionsession){

StringuserId=session.getRequestParameterMap().get(userId).get(0);

//加入Set中

sessions.put(userId,session);

//在线数增加

onlineCount.getAndIncrement();

(session-{},online-count-{},session.getId(),onlineCount.get());

*客户端消息处理的方法

@OnMessage

publicvoidsendMsg(Sessionsender,Stringmessage)throwsException{

MsgDTOdto=JSONUtil.toBean(message,MsgDTO.class);

Sessionreceiver=sessions

文档评论(0)

132****1508 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档