栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot中websocket的使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot中websocket的使用

SpringBoot中websocket的使用
  • 1 WebSocket诞生
  • 2 WebSocket的简介
  • 3 WebSocket的使用
        • 1 准备一个SpringBoot环境
        • 2 添加WebSocket配置
        • 3 添加服务端WebSocket类
        • 4 启动项目, 使用在线工具模仿前端调用WebSocket
        • 5 查看数据

最近看到websocket相关内容, 记录一下SpringBoot和websocket的简单使用

1 WebSocket诞生

经典的问题: 有了HTTP协议, 为什么还需要WebSocket协议.

因为HTTP协议需要客户端向服务端发起请求, 服务端才能响应数据, 服务端不能主动向客户端通信. 在一些场景下, 需要服务端向客户端发起通信, 推送数据, 所以WebSocket协议诞生了.

2 WebSocket的简介

WebSocket 协议在2008年诞生,2011年成为国际标准。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

其主要的特点是: 允许服务器主动发送信息给客户端.

使用场景:

  • 聊天室
  • 消息推送
3 WebSocket的使用 1 准备一个SpringBoot环境 2 添加WebSocket配置
@Configuration
public class websocketConfig {

    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }
}
3 添加服务端WebSocket类
@Component
@Slf4j
@ServerEndpoint(value = "/test/{userId}")
public class SocketTest {
    
    private String userId;

    // 连接时执行
    @OnOpen
    public void onOpen(@PathParam("userId") String userId, Session session) throws IOException {
        this.userId = userId;
        log.info("新连接:{}", userId);
    }

    // 关闭时执行
    @OnClose
    public void onClose() {
        log.info("连接:{} 关闭", this.userId);
    }

    // 收到消息时执行
    @OnMessage
    public void onMessage(String message, Session session) throws IOException {
        log.info("收到用户{}的消息{}", this.userId, message);
        session.getBasicRemote().sendText("收到 " + this.userId + " 的消息 "); //回复用户
    }

    // 连接错误时执行
    @OnError
    public void onError(Session session, Throwable error) {
        log.info("用户userId为:{}的连接发送错误", this.userId);
        error.printStackTrace();
    }

}
4 启动项目, 使用在线工具模仿前端调用WebSocket

在线工具: http://coolaf.com/tool/chattest

5 查看数据

以本地为例:

访问: ws://localhost:8080/test/user001

// 输入地址,点击连接,看到控制台 输出新建连接
// 发送哈哈到后台, 看到控制台 收到用户的哈哈
// 断开连接, 看到控制台,断开连接

// 新连接:user001
// 收到用户user001的消息哈哈
// 连接:user001 关闭

参考资料:

https://www.ruanyifeng.com/blog/2017/05/websocket.html

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/356046.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号