springboot 直接转发调用_SpringBoot集成WebSocket实现前后端消息互传的方法

本文介绍了WebSocket协议及其解决的HTTP通信问题,并详细讲解了如何在SpringBoot应用中集成WebSocket,实现前后端消息的双向传递。通过配置WebSocketConfig、创建WebSocketServer以及在Controller中编写消息推送接口,展示了如何建立连接、处理消息和主动推送信息给客户端。
摘要由CSDN通过智能技术生成

什么是WebSocket?

WebSocket 协议是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工 (full-duplex) 通信—允许服务器主动发送信息给客户端。

b34ffde6c16ba9a29a26fa12af4ae859.png

为什么需要WebSocket?

大家都知道以前客户端想知道服务端的处理进度,要不停地使用 Ajax 进行轮询,让浏览器隔个几秒就向服务器发一次请求,这对服务器压力较大。另外一种轮询就是采用 long poll 的方式,这就跟打电话差不多,没收到消息就一直不挂电话,也就是说,客户端发起连接后,如果没消息,就一直不返回 response 给客户端,连接阶段一直是阻塞的。

而 WebSocket 解决了 HTTP 的这几个难题。当服务器完成协议升级后( HTTP -> WebSocket ),服务端可以主动推送信息给客户端,解决了轮询造成的同步延迟问题。由于 WebSocket 只需要一次 HTTP 握手,服务端就能一直与客户端保持通信,直到关闭连接,这样就解决了服务器需要反复解析 HTTP 协议,减少了资源的开销。

444683bc84d927f1cc65c1e20d3d5273.png

现在通过 SpringBoot 集成 WebSocket 来实现前后端通信。

集成 WebSocket 实现前后端通信

项目代码结构图

518008ff74e31614b1d47925d521fbce.png

依赖导入

SpringBoot2.0 对 WebSocket 的支持简直太棒了,直接就有包可以引入 。

org.springframework.boot

spring-boot-starter-websocket

配置 WebSocketConfig

启用WebSocket的支持也是很简单,将ServerEndpointExporter对象注入到容器中。

package com.tuhu.websocketsample.configuration;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.web.socket.server.standard.ServerEndpointExporter;

@Configuration

public class WebSocketConfig {

@Bean

public ServerEndpointExporter serverEndpointExporter() {

return new ServerEndpointExporter();

}

}

WebSocket 服务端 WebSocketServer

因为 WebSocket 是类似客户端服务端的形式(采用ws协议),那么这里的 WebSocketServer 其实就相当于一个 ws协议的 Controller。直接 @ServerEndpoint("/websocket") 、@Compone

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值