SpringBoot系列之单机WebSocket

随着互联网实时需求的增长,传统的HTTP请求响应模式效率低下。本文介绍了WebSocket作为服务器推送技术的解决方案,详细阐述了WebSocket协议的背景和优势。接着,通过SpringBoot搭建了一个单节点WebSocket后台,讲解了如何引入依赖、配置文件以及ServerEndPoint的实现,支持不同业务连接和客户端重复登录。
摘要由CSDN通过智能技术生成

简介

背景

随着互联网的发展,传统的请求响应模式的Web应用对不断出现的实时响应,高并发,服务推送等支持的效率不高。在Web世界中,服务器永远是被动地发送数据,前提是客户端必须先发送请求。浏览器其实并不知道服务器的信息什么时候会有改变,为了实时的交流不错过某些信息,只能通过轮询(Polling)技术不断刷新页面来获得最新的数据,这种方式不但浪费服务器的资源,最重要的是每次建立(或关闭)新的HTTP连接都有一定的延迟,这种延迟使得频繁信息传递的应用无法忍受。于是就产生了服务器推送技术。这种技术虽然可以双向通信,但依然需要反复发出请求。有的普遍采用的长链接,也会消耗服务器资源。在这种情况下,HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。

WebSocket

WebSocket是一种建立在TCP连接上进行全双工通信的协议,是HTML5的一种新的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据实时传输。

单节点后台搭建

该示例通过cType区分不同业务连接,code代表连接的客户端标识,并且支持重复登录。

引入依赖

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

配置文件

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;

/**
 * websocke注册Bean配置
 */

@Configuration
public class WebSocketConfig {
   
    /**
     * 注入一个ServerEndpointExporter,该Bean会自动注册
     * 使用@ServerEndpoint注解申明的websocket endpoint
     * @return
     */
    @Bean
    public ServerEndpointExporter serverEndpointExporter(){
   
        return new ServerEndpointExporter();
    }
}

ServerEndPoint

import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烧香龙猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值