前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >WebSocket快速体验 - Spring Boot & JavaScript

WebSocket快速体验 - Spring Boot & JavaScript

作者头像
十毛
发布于 2023-10-16 08:35:08
发布于 2023-10-16 08:35:08
22400
代码可运行
举报
运行总次数:0
代码可运行

公司最近的项目需要用到WebSocket实现消息的适时推送,比如预警消息等,本文使用Spring Boot和JavaScript实现了快速demo

Websocket服务端 - Spring Boot

  • 引入依赖: pom.xml
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
  • Websocket配置
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@EnableWebSocket
@Configuration
public class WebSocketConfig {

    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }
}
  • Websocket消息处理 监听事件open、message、close、error
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Slf4j
@Component
@ServerEndpoint(value = "/websocket")
@EnableScheduling
public class WebsocketHandler {
    @OnOpen
    public void onOpen(Session session) {
        System.out.println("WebSocket connection opened: " + session.getId());
        sessionSet.add(session);
    }

    @OnMessage
    public void onMessage(String message, Session session) throws IOException {
        System.out.println("Received message from client: " + message);
        session.getBasicRemote().sendText("Hello, WebSocket client!");
    }

    @OnClose
    public void onClose(Session session, CloseReason reason) {
        System.out.println("WebSocket connection closed: " + session.getId() + ", Reason: " + reason.getReasonPhrase());
        sessionSet.remove(session);
    }

    @OnError
    public void onError(Session session, Throwable error) {
        System.err.println("Error occurred on WebSocket connection: " + session.getId());
        error.printStackTrace();
    }
}

WebSocket客户端 - JavaScript

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//创建WebSocket
var socket = new WebSocket("ws://localhost:8080/websocket");

//监听消息
socket.onmessage = function(event) {
    if (typeof event.data === 'string') {
        // 接收到文本消息的处理逻辑
        console.log("Received text message from server: " + event.data);
    } else if (event.data instanceof Blob) {
        // 接收到二进制数据的处理逻辑
        var reader = new FileReader();
        reader.onload = function() {
            var binaryData = reader.result;
            console.log("Received binary data from server: " + binaryData);
        };
        reader.readAsArrayBuffer(event.data);
    } else {
        console.log("Received message from server: " + event.data);
    }
};

//发送消息给服务器
socket.send("hello world");

参考

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
你知道在springboot中如何使用WebSocket吗
  我们都知道 http 协议只能浏览器单方面向服务器发起请求获得响应,服务器不能主动向浏览器推送消息。想要实现浏览器的主动推送有两种主流实现方式:
用户2038589
2019/05/24
2.8K0
SpringBoot 使用WebSocket打造在线聊天室(基于注解)
例如:webSocket.onmessage = function (event) {console.log('WebSocket收到消息:' + event.data);
好好学java
2018/10/18
2.5K0
springboot整合websocket技术
简单来说就是一个基于TCP的持久化的网络通信协议。主要作用就是:服务端可以主动推送信息给客户端,不需要客户端重复的向服务端发请求查询。
海加尔金鹰
2020/06/09
1.1K0
SpringBoot2整合WebSocket,实现后台向前端推送信息
WebSocket 协议是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。
Li_XiaoJin
2022/06/12
2.7K0
SpringBoot2整合WebSocket,实现后台向前端推送信息
SpringBoot整合WebSocket打造在线聊天室实战!!!
1、WebSocket是HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。在WebSocket API中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。
用户5224393
2019/08/13
2.5K0
SpringBoot整合WebSocket打造在线聊天室实战!!!
Spring Boot集成websocket
像目前的直播、弹幕、小游戏等方面都用到了websocet进行长链接,相对于http的一次请求一次响应websocket只需要进行一次握手即长久性的建立链接进行消息互通。
余生大大
2022/11/02
1.8K0
Spring Boot集成websocket
springboot整合websocket(1)
  我们都知道http协议只能浏览器单方面向服务器发起请求获得响应,服务器不能主动向浏览器推送消息。想要实现浏览器的主动推送有两种主流实现方式:
用户2038589
2018/09/06
7390
Spring boot+VUE+websocket 实现消息推送
        最近涉及消息通知功能,在管理员创建发送消息时,登陆用户可以实时接收到新增消息的提醒,避免频繁刷新,通过websocket取代轮询setInterval。
用户1409099
2019/05/14
5.9K0
spring boot 使用websocket
依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> 配置 @Configuration public class WebSocketConfig { @Bean public ServerEndpointExporter serverEndpointExporter() {
路过君
2020/07/10
9620
Spring Boot 整合使用Websocket
使用websocket有两种方式:1是使用sockjs,2是使用h5的标准。使用Html5标准自然更方便简单,所以记录的是配合h5的使用方法。
BUG弄潮儿
2020/06/12
1.1K0
WebSocket在Spring Boot中的使用
“WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。”
小诸葛
2020/04/14
4.3K0
WebSocket在Spring Boot中的使用
WebSocket 双向通信
在浏览器中,JavaScript提供了WebSocket API,它使开发人员能够创建WebSocket连接、发送和接收消息。基本的WebSocket客户端API包括以下几个主要接口和方法:
.29.
2024/01/21
4000
WebSocket 双向通信
Spring Boot 整合单机websocket
websocket 是一个通信协议,通过单个 TCP 连接提供全双工通信。websocket 连接成功后,服务端和客户可以进行双向通信。不同于 http 通信协议需要每次由客户端发起,服务响应到客户端。websocket 相对轮询也能节约带宽,并且能实时的进行通信。
用户10384376
2023/02/25
5580
Spring Boot 整合单机websocket
万字详解,带你彻底掌握 WebSocket 用法(至尊典藏版)
WebSocket是一种协议,用于在Web应用程序和服务器之间建立实时、双向的通信连接。
程序员蜗牛
2024/03/29
6.2K0
万字详解,带你彻底掌握 WebSocket 用法(至尊典藏版)
SpringBoot之WebSocket和SSE
前言: 传统的网页都是浏览器向服务器“查询”数据,但是很多场合,最有效的方式是服务器向浏览器“发送”数据。比如,每当收到新的电子邮件,服务器就向浏览器发送一个“通知”,这要比浏览器按时向服务器查询(polling)更有效率。
王念博客
2019/07/24
1.4K0
集成websocket实现实时通信(ruoyi 使用笔记)
客户端向服务器发起 WebSocket 握手请求; 服务器返回确认信息给客户端,完成握手; 握手成功后,客户端和服务器就可以通信了; 双方可以随时发送消息到对方,也可以关闭连接。
默 语
2024/11/20
7250
集成websocket实现实时通信(ruoyi 使用笔记)
服务端常用的WebSocket框架
输入命令 需要修改的 url、groupId、artifactId、version
码客说
2021/01/20
1.4K0
简易集成websocket技术实现消息推送
首先介绍下WebSocket,它是一种网络通信技术,该技术最大的特点就是,服务器端可以主动往客户端发送消息;当然,客户端也可以主动往服务器发送消息,实现两端的消息通信,属于网络推送消息技术的一种。
呆呆
2021/10/09
1.8K0
SpringBoot、Vue3 整合 WebSocket
WebSocket 是一种计算机通信协议,用于在Web应用程序中实现双向通信。它允许服务器和客户端之间建立持久连接,并且可以通过单个网络套接字进行全双工通信。与传统的HTTP请求-响应模型不同,WebSocket 使用事件驱动的模式,可以实时地在服务器和客户端之间传输数据。
默存
2023/09/13
1.3K0
SpringBoot、Vue3 整合 WebSocket
SpringBoot集成WebSocket实践&总结
WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议,是应用层第七层上的一个应用层协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。
不愿意做鱼的小鲸鱼
2022/09/26
2.3K0
SpringBoot集成WebSocket实践&总结
相关推荐
你知道在springboot中如何使用WebSocket吗
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文