Springboot 整合 WebSocket ,使用STOMP协议 ,前后端整合实战 (一)

文章介绍了如何在SpringBoot应用中使用WebSocket实现前端的广播消息和点对点推送,通过`SimpMessagingTemplate`进行操作,并提供了前端页面的示例。此外,还提到了前端开发学习资源和面试题准备的重要性。
摘要由CSDN通过智能技术生成

public void setContent(String content) {

this.content = content;

}

}

5.前端简单调试页面

① publicExample.html 监听广播消息的测试页面

等系统推消息

Seems your browser doesn’t support Javascript! Websocket relies on Javascript being

enabled. Please enable

Javascript and reload this page!

连接广播频道

Connect

取消连接

Disconnect

广播消息

Send

接收到的消息:

简析:

趁热打铁,我们模拟系统后端给前端推送广播消息,通过接口模拟:

TestController.java

/**

  • @Author JCccc

  • @Description

  • @Date 2021/8/20 8:53

*/

@Controller

public class TestController {

@Autowired

public SimpMessagingTemplate template;

/**

  • 广播

  • @param msg

*/

@ResponseBody

@RequestMapping(“/pushToAll”)

public void subscribe( @RequestBody Message msg) {

template.convertAndSend(“/topic/all”, msg.getContent());

}

}

简析:

我们推送消息,直接用 SimpMessagingTemplate ,

用的是convertAndSend 广播方式推送到对于的主题目的地 destination 。

(可以看到其实还有convertAndSendToUser ,不着急,后面会说,这是发送给某个连接用户的)

直接把项目跑起来,打开页面开始测试:

我们先点击connect ,连接成功:

可以看到实际上stomp.min.js 最终也是转化成为 ws/wss这种方式成功连接:

调用测试接口,推送广播消息:

在console其实也能看到:

广播功能就到这,接下来是 点对点。

前端页面:

privateExample.html

聊起来

Seems your browser doesn’t support Javascript! Websocket relies on Javascript being

enabled. Please enable

Javascript and reload this page!

连接用户

Connect

取消连接

Disconnect

发送消息

内容

发给谁

Send

接收到的消息:

简析:

趁热打铁,我们模拟系统后端给前端推送点对点消息(指定某个用户),通过接口模拟:

/**

  • 点对点

*/

@ResponseBody

@RequestMapping(“/pushToOne”)

public void queue(@RequestBody Message msg) {

System.out.println(“进入方法”);

/*使用convertAndSendToUser方法,第一个参数为用户id,此时js中的订阅地址为

“/user/” + 用户Id + “/message”,其中"/user"是固定的*/

template.convertAndSendToUser(msg.getTo(), “/message”, msg.getContent());

}

用的是convertAndSendToUser 推送到指定的用户 ,对于的主题目的地 destination(/message)

也许看到这里,你会觉得很奇怪,为什么我们推的主题是 /message,但是前端订阅的却是

“/user/” + 用户Id + “/message”

我们直接看源码:

ok,应该不用多说,代码帮我们自己拼接起来了,跟前端订阅规则保持一致。

直接跑项目,测试一下:

模拟我们连接的用户标识 19901 ,连接成功

使用postman调用我们的测试接口,模拟系统指定推送消息到 19901 这个人 :

然后也给20011发送一下消息:

然后看到对应的用户也能收到对应的消息:

对点推送,广播推送,也已经完毕了 。

这种情况就是相当于使用http接口方式,去撮合后端服务做 消息推送。

其实spring还提供了一些好玩的注解,

@MessageMapping  这个注解是对称于  @EnableWebSocketMessageBroker

也就是说,如果我们使用@EnableWebSocketMessageBroker ,那么我们在接口上面其实就能直接使用  @MessageMapping。

怎么用?

然后前端代码里面 的使用:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

整理面试题,不是让大家去只刷面试题,而是熟悉目前实际面试中常见的考察方式和知识点,做到心中有数,也可以用来自查及完善知识体系。

《前端基础面试题》,《前端校招面试题精编解析大全》,《前端面试题宝典》,《前端面试题:常用算法》PDF完整版点击这里领取

前端面试题宝典

前端校招面试题详解

,同时减轻大家的负担。**

[外链图片转存中…(img-Fvtsp5Cn-1712477247999)]

[外链图片转存中…(img-7YHWC2bj-1712477247999)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

[外链图片转存中…(img-K2T9Y4xG-1712477248000)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

整理面试题,不是让大家去只刷面试题,而是熟悉目前实际面试中常见的考察方式和知识点,做到心中有数,也可以用来自查及完善知识体系。

《前端基础面试题》,《前端校招面试题精编解析大全》,《前端面试题宝典》,《前端面试题:常用算法》PDF完整版点击这里领取

[外链图片转存中…(img-lwhVDTN3-1712477248000)]

[外链图片转存中…(img-7xHc1cGB-1712477248000)]

[外链图片转存中…(img-dgMgJ366-1712477248000)]

使用 Spring Stomp WebSocket 实现前后端交互时,可以通过注解 `@MessageMapping` 来接收前端发送的请求。 具体步骤如下: 1. 在 Spring Boot 应用中添加对 WebSocket 的支持,可以使用 Spring Boot 自带的 `spring-boot-starter-websocket` 依赖,或者手动添加 `spring-websocket` 和 `spring-messaging` 依赖。 2. 创建一个处理 WebSocket 消息的控制器类,并在该类中定义一个或多个方法来处理接收到的消息。例如: ```java @Controller public class WebSocketController { @MessageMapping("/hello") @SendTo("/topic/greetings") public Greeting greeting(HelloMessage message) { return new Greeting("Hello, " + message.getName() + "!"); } } ``` 在上面的例子中,我们使用 `@MessageMapping` 注解来指定处理 `/hello` 路径的消息,并通过 `@SendTo` 注解将处理结果发送到 `/topic/greetings` 路径下的所有订阅者。 3. 在前端页面中使用 Stomp.js 或 SockJS 来连接 WebSocket 并发送消息。例如: ```javascript var socket = new SockJS('/websocket'); var stompClient = Stomp.over(socket); stompClient.connect({}, function(frame) { console.log('Connected: ' + frame); stompClient.subscribe('/topic/greetings', function(greeting) { console.log('Received: ' + greeting); }); stompClient.send('/hello', {}, JSON.stringify({ 'name': 'World' })); }); ``` 在上面的例子中,我们使用 `SockJS` 连接到 `/websocket` 路径下的 WebSocket 服务,并使用 `Stomp` 协议来发送和接收消息。我们订阅了 `/topic/greetings` 路径下的消息,并在发送消息时指定了 `/hello` 路径。 4. 运行应用程序,打开前端页面,即可通过 WebSocket 接收前端请求并进行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值