前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >第二十章:SpringBoot项目中使用WebSocket配置广播式通信

第二十章:SpringBoot项目中使用WebSocket配置广播式通信

作者头像
恒宇少年
发布于 2018-06-27 07:25:00
发布于 2018-06-27 07:25:00
1.4K0
举报

WebSocket为浏览器和服务端提供了双工异步通信的功能,浏览器可以向服务端发送消息,服务端也可以向浏览器发送消息。WebSocket需要浏览器的支持,目前大多数主流的浏览器都是支持的。

WebSocket是通过socket来实现双工异步通信能力的。但是直接使用WebSocket协议开发程序闲的特别繁琐,一般情况我们使用STOMP来实现交互。

SpringBoot在tomcat7内嵌版本就已经开始支持了WebSocket的支持,配置源码存在于org.springframework.boot.autoconfigure.websocket下,接下来我们来讲解SpringBoot项目如何配置使用WebSocket。

本章目标

SpringBoot项目配置使用WebSocket实现广播式消息。

构建项目

我们使用IntelliJ IDEA工具创建一个SpringBoot项目,并添加Jsp、Web、WebSocket等依赖,如下图1所示:

图1

配置WebSocket

下面我们创建一个WebSocketConfig配置类,添加SpringBoot项目对WebSocket的支持配置,如下图2所示:

图2

如上图2所示,我们通过@EnableWebSocketMessageBroker注解开启使用STOMP协议来传输消息,并且实现了registerStompEndpoints方法添加了对应的STOMP使用SockJS协议。接下来我们配置两个实体用于浏览器与服务器端的通信交互。

浏览器向服务端发送消息实体

我们创建一个简单的WiselyMessage实体,用于浏览器向服务端发送消息参数,如下图3所示:

图3

我们消息实体内仅添加了一个名称,我们一会会在前台界面将name字段的值传输到后台。

服务端向浏览器发送的实体

下面我们再来创建一个服务端广播通知浏览器的实体类型,如下图4所示:

图4

上图4内仅一个消息内容返回到前台。我们通讯实体已经配置完成,下面我们开始编写通讯交互的控制器以及添加配置WebSocket的请求路径。

配置WebSocket控制器

我们添加一个名叫WsController的控制器并添加对应的@MessageMapping注解开启WebSocket的访问地址映射,如下图5所示:

图5

上图5内,当浏览器向服务端发送请求时,通过@MessageMapping映射/welcome这个地址,类似@RequestMapping,当服务端有消息存在时,会对订阅@SendTo中路径的浏览器发送请求。接下来我们添加一个Jsp页面来配置WebSocket的JS使用方式。

配置JSP支持WebSocket

在编写对应的代码之前,我们需要下载三个js文件,分别是:jquery.min.js、sockjs.min.js、stomp.min.js,在本章源码的resources/statis目录下(文章源码在本文最后)。Jsp代码如下图6所示:

图6

我们在Jsp页面加载的时候先执行了一边关闭socket通道的操作,当我们点击《连接》按钮时会调用如下图7所示的Js方法完成开启连接操作:

图7

可以看到我们通过SockJs来注册了endpoine,并且通过客户端开启通过连接,连接成功后调用setConnected方法来修改界面的元素显示隐藏,如下图8所示:

图8

通过注册/topic/getReponse路径来回去服务端向浏览器端的请求数据内容,并且调用showResponse方法显示在页面中,showResponse方法如下图9所示:

图9

下面是断开连接的代码,如下图10所示:

图10

上面我们关于WebSocket的配置已经完成,我们需要访问对应的Jsp来测试,我们先修改application.properties配置文件添加JSP的路径映射,如下图11所示:

图11

点击发送名称到后台的请求方法代码如下图12所示:

图12

可以看到我们发送内容直接到@MessageMapping的路径/welcome下。

映射MVC到Index.jsp

我们创建一个名叫做WebConfig的配置类并继承WebMvcConfigurerAdapter,实现addViewControllers方法添加对应的路径映射配置,如下图13所示:

图13

可以看到我们映射/index地址到/index.jsp也就是到webapp/WEB-INF/jsp/index.jsp,下面我们来启动项目测试效果。

运行测试

我们启动项目后,访问地址:127.0.0.1:8080/index,界面输出内容如下图14所示:

图14

我们现在是断开连接的状态,我们尝试点击连接看下效果,如下图15所示:

图15

可以看到我们成功的开启了WebSocket通道,开启通道后显示了对应的输入内容,我们来尝试输入一个名称点击发送查看界面输出内容如下图16所示:

图16

点击《发送》按钮后等待3秒钟后,界面会输出欢迎的字样,证明我们的WebSocket通道已经成功的接通并且获取到了服务端返回到浏览器的数据,下面我们打开多个浏览器Tab来测试广播式的消息是否可以发送到多个开启WebSocket通道的浏览器中。

测试广播式消息返回

我们先来打开浏览器中的多个Tab如下图17所示:

图17

上图17内的三个浏览器都开启了WebSocket通道,下面我们在其中一个浏览器中输出一个名称并点击《发送》按钮后,挨个浏览器查看效果,如下图18、19、20所示:

图18

图19

图20

可以看到上三个图中,我们的WebSocket服务端通过广播的形式完成了服务端的消息发送到浏览器中。

总结

以上内容就是本章的全部内容,本章主要讲解了SpringBoot项目下如何配置使用WebSocket开启广播式消息发送,在以后的章节中我会添加点对点的形式。

本章源码已经上传到码云:

SpringBoot配套源码地址:https://gitee.com/hengboy/spring-boot-chapter

SpringCloud配套源码地址:https://gitee.com/hengboy/spring-cloud-chapter

SpringBoot相关系列文章请访问:目录:SpringBoot学习目录

QueryDSL相关系列文章请访问:QueryDSL通用查询框架学习目录

SpringDataJPA相关系列文章请访问:目录:SpringDataJPA学习目录

SpringBoot相关文章请访问:目录:SpringBoot学习目录,感谢阅读!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.04.27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
TRTC Android端开发接入学习之互动直播(七)
近年来,直播兴起,各家直播平台的火爆,支持演唱会的直播、主播、明星直播和带货直播等等等,TRTC提供了简便快捷完整的直播互动解决方案,这次我们来一起学习如何在android端使用TRTC完成互动直播的基本流程
腾讯云-hongyang
2020/09/11
1.9K0
TRTC Android端开发接入学习之实现实时屏幕分享(四)
在完成上一篇文章中我们知道了如何集成到项目中,本节我们来实现其中比较简单的一个功能,熟悉SDK的用法。屏幕分享代码在DEMO->trtcmeetingdemo module中
腾讯云-hongyang
2020/09/02
2K0
TRTC Android端开发接入学习之实现实时屏幕分享(四)
TRTC Android端开发接入学习之实现语音聊天室(九)
多人语音是音视频通话的常见应用场景之一,TRTC对着这方面的支持必不可少,本次我们学习如何使用TRTC快速开发语音聊天室功能。
腾讯云-hongyang
2020/09/18
1.9K0
TRTC Android端开发接入学习之实现视频通话(五)
经过上一篇《屏幕分享》功能的实践,我们知道了如何使用官方提供的功DEMO,快速开发。今天我们来尝试使用官方提供的组件和自定义的UI实现功能。
腾讯云-hongyang
2020/09/04
2.7K0
TRTC Android端开发接入学习之实现视频通话(五)
iOS音视频接入 - TRTC多人视频会议
官方SDK中提供了可复用的UI和封装了TRTCCloud的model,具体位置见下图。
小明同学接音视频
2020/10/15
2.5K0
iOS音视频接入 - TRTC多人视频会议
实时音视频(TRTC)常见问题
一般而言,媒体音量指播放音乐、视频的声音、游戏声音等的音量,而通话音量指打电话的音量,视频通话的音量。
腾讯云-yyuanchen
2019/09/27
13.6K1
TRTC Android端开发接入学习之实现语音通话(六)
在上一篇《视频通话》中,我们实现了双方的视频通话,总所周知没有声音再好的戏也出不来,本期我们来学习如何使用TRTC完成语音通话的功能。
腾讯云-hongyang
2020/09/09
1.4K0
Android TRTC 推自定义采集的视频数据
如果开发者想在 TRTC 中集成第三方美颜库来实现美颜、滤镜等功能,第三方库的美颜功能输入数据格式支持有 camera 的原始数据(YUV 数据)、纹理数据(Textureid)。开发者想实现该功能,需要采用自定义采集视频数据接口,然后复用 LiteAVSDK 的编码和推流功能。
腾讯云-chaoli
2019/07/07
1.9K0
Android TRTC 推自定义采集的视频数据
TRTC零基础上手 -- 码上视频推流篇
视频画面来自于摄像头,TRTC SDK会采集摄像头的画面,然后编码打包发送至云端链路,开发者只需要调用采集接口和设置编码器视频参数(码率、分辨率、帧率等)完成摄像头画面的采集。
天上云间
2022/01/13
2.3K0
TRTC 视频旋转场景方案
在网络会议、双人视频通话等场景时,将手机横屏、竖屏放置场景下,实现本地和远端都可以看到正常的画面效果。
erickyan
2022/04/12
1.8K0
TRTC 视频旋转场景方案
TRTC零基础上手 -- 码上视频订阅篇
当作为拉流端,在远端推流后即可开始拉流,为了用户体验,建议按照规范要求,在收到SDK的事件回调后开始拉流,并在控件上显示远端画面
天上云间
2022/01/19
1.3K0
TRTC Android端开发接入学习之什么是TRTC(二)
TRTC 即 Tencent RTC,中文名是腾讯实时音视频,源自 QQ 音视频团队,是基于 QQ 十几年来 的音视频技术积累,在腾讯云上部署售卖的 RTC 云服务,致力于帮助企业快速搭建低成本、高品质、 跨平台的实时音视频互动能力的完整解决方案。 功能上支持语音通话、视频通话、连麦互动、美颜滤镜、旁路推流、视频录制、混流转码、交互式 白板、桌面分享、截图、鉴黄等,并提供微信小程序、 WebRTC、APP、PC、MAC 等全平台互联互 通能力,很好地应用于云游戏、云会议、快直播、实时音视频 PaaS 服务等领域。
腾讯云-hongyang
2020/09/01
2.5K0
TRTC Android端开发接入学习之什么是TRTC(二)
TRTC终端混流示例
使用TRTCSDK直播时,如果角色都是大主播、小主播,类似会议场景,每个角色都是参与者,且人数较少(30以内),彼此通过渲染对方的view,来实现一屏多画面;
ppchao
2020/12/11
1.3K0
TRTC终端混流示例
TRTC Android端开发接入学习之环境快速搭建(三)
通过前面对TRTC的基本了解,本期我们开始尝试使用SDK在本地搭建开发环境,同时说明SDK的基本用法
腾讯云-hongyang
2020/09/01
1.1K0
TRTC Android端开发接入学习之环境快速搭建(三)
实时音视频SDK,如何实现类似微信的纯语音通话功能?
实时音视频TRTCSDK适用的业务场景是视频会议、坐席视频、在线教育等,如果您希望实现类似微信的语音通话、语音会议功能,TRTCSDK也是支持的,只需要微调几个参数就可以实现,将采集音视频的api,换成只采集音频。
腾讯云-chaoli
2019/03/05
8.1K2
实时音视频SDK,如何实现类似微信的纯语音通话功能?
【最佳实践】巡检项:实时音视频 (TRTC) 原生平台 SDK 拉流时序是否正确
客户业务侧调用mTRTCCloud.startRemoteView()接口订阅远端视频流,出现偶现的失败情况,具体操作是在用户进入房间的回调事件onEnterRoom之前调用startRemoteView(),大概率会出现黑屏现象。客户告知希望可以根据自己的业务逻辑去订阅远端流。
jackwlchen
2022/04/29
5160
TRTC Android端开发接入学习之常见问题(十一)
V1和V2主要区别在于IM的SDK是否内嵌于TRTC中,V1线路是内嵌,而V2则可选,默认不打包IM的SDK包。V2在通话质量、线路规格、接入难度以及功能扩展上均比V1更有优势。
腾讯云-hongyang
2020/09/27
3.1K0
TRTC学习之旅(四)-- 用electron实现视频聊天室
前面我们已经学习过在web端用TRTC实时音视频SDK实现了多人会议室和互动直播模式,今天我们学习一下在桌面应用层用electron实现视频聊天。
黑眼圈云豆
2020/07/08
4.9K7
iOS音视频接入 - TRTC接入实时视频通话
(前面我们已经了解TRTC的基本架构和功能,现在我们就来接入实时视频通话功能,此功能和微信的一对一视频通话是一致的,需要两个角色,一个角色是主动呼叫、一个为呼叫接听,结合使用场景我们来接入此功能。
小明同学接音视频
2020/10/13
6.1K0
iOS音视频接入 - TRTC接入实时视频通话
产品动态 | TRTC React Native SDK上线啦
React Native 是一个使用React和应用平台的原生功能来构建 Android 和 iOS 应用的开源框架。通过 React Native,您可以使用 JavaScript 来访问移动平台的 API,以及使用 React 组件来描述 UI 的外观和行为:一系列可重用、可嵌套的代码。 TRTC React Native SDK 是基于腾讯云 iOS/Android 平台的 TRTC SDK 进行封装的,架构图整体跟Flutter类似。 TRTC React Native sdk类文件说
腾讯云音视频
2021/11/22
1.2K0
推荐阅读
相关推荐
TRTC Android端开发接入学习之互动直播(七)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档