Spring WebSocket实现实时通信

简介

WebSocket 是基于TCP/IP协议,独立于HTTP协议的通信协议。WebSocket 连接允许客户端和服务器之间的全双工通信,以便任何一方都可以通过已建立的连接将数据推送到另一方。

我们常用的HTTP是客户端通过「请求-响应」的方式与服务器建立通信的,必须是客户端主动触发的行为,服务端只是做好接口被动等待请求。而在某些场景下的动作,是需要服务端主动触发的,比如向客户端发送消息、实时通讯、远程控制等。客户端是不知道这些动作几时触发的,假如用HTTP的方式,那么设备端需要不断轮询服务端,这样的方式对服务器压力太大,同时产生很多无效请求,且具有延迟性。于是才采用可以建立双向通讯的长连接协议。通过握手建立连接后,服务端可以实时发送数据与指令到设备端,服务器压力小。

Spring WebSocket是Spring框架的一部分,提供了在Web应用程序中实现实时双向通信的能力。本教程将引导你通过一个简单的例子,演示如何使用Spring WebSocket建立一个实时通信应用。

准备工作

确保你的项目中已经引入了Spring框架的WebSocket模块。你可以通过Maven添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

创建WebSocket配置类(实现WebSocketConfigurer接口)

首先,创建一个配置类,用于配置WebSocket的相关设置。

package com.ci.erp.human.config;

import com.ci.erp.human.handler.WebSocketHandler;
import com.ci.erp.human.interceptor.WebSocketHandleInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;

/**
 *
 * Websocket配置类
 *
 * @author lucky_fd
 * @since 2024-01-17
 */
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {

    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        // 注册websocket处理器和拦截器
        registry.addHandler(webSocketHandler(), "/websocket/server")
                .addInterceptors(webSocketHandleInterceptor()).setAllowedOrigins("*");
        registry.addHandler(webSocketHandler(), "/sockjs/server").setAllowedOrigins("*")
                .addInterceptors(webSocketHandleInterceptor()).withSockJS();
    }

    @Bean
    public WebSocketHandler webSocketHandler() {
        return new WebSocketHandler();
    }

    @Bean
    public WebSocketHandleInterceptor webSocketHandleInterceptor() {
        return new WebSocketHandleInte

相关推荐

  1. Spring WebSocket实现实时通信

    2024-01-31 00:26:02       38 阅读
  2. Python实现WebSocket通信

    2024-01-31 00:26:02       17 阅读
  3. 前后端实时数据通信

    2024-01-31 00:26:02       17 阅读
  4. socket编程实现TCP通信

    2024-01-31 00:26:02       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-31 00:26:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-31 00:26:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-31 00:26:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-31 00:26:02       20 阅读

热门阅读

  1. springboot请求406、500问题

    2024-01-31 00:26:02       38 阅读
  2. DC-证书颁发机构(23国赛真题)

    2024-01-31 00:26:02       36 阅读
  3. 多语言游戏网站

    2024-01-31 00:26:02       42 阅读
  4. Bean

    2024-01-31 00:26:02       34 阅读
  5. 20240129 大模型快讯

    2024-01-31 00:26:02       45 阅读
  6. Vue2 悬浮球

    2024-01-31 00:26:02       37 阅读
  7. Springboot整合mqtt采用注解进行监听(第二篇)

    2024-01-31 00:26:02       39 阅读
  8. 2.1写一个梅林dynv6插件(上)

    2024-01-31 00:26:02       49 阅读
  9. 为什么Vue3双向绑定使用Proxy

    2024-01-31 00:26:02       47 阅读
  10. 飞往前端的第二天

    2024-01-31 00:26:02       34 阅读
  11. SpringMVC初始化源码学习

    2024-01-31 00:26:02       35 阅读
  12. Chinese and English names of 45 common character symbols

    2024-01-31 00:26:02       28 阅读