websokct介绍以及实现

websokcet
摘要由CSDN通过智能技术生成

websocket简介

简单介绍下webSocket,webSoket是一种基于Tcp连接的协议,只需建立一次握手,就能实现持久性的连接,允许服务器主动向浏览器推送数据,也允许浏览器向服务器推送数据。

WebSocket连接过程
客户端通过HTTP协议向服务端发送握手,服务端向客户端返回ACK,此时握手成功,建立连接并维持该连接;后面服务端和客户端就可以基于建立的连接进行双向通信,直到连接关闭。

应用场景
聊天弹幕,媒体聊天qq微信,协同编辑腾讯文档,股票基金报价实时更新,管理系统数据实时更新等

优点:
较少的控制开销。在连接创建后,服务器和客户端之间交换数据时,用于协议控制的数据包头部相对较小。在不包含扩展的情况下,对于服务器到客户端的内容,此头部大小只有2至10字节(和数据包长度有关);对于客户端到服务器的内容,此头部还需要加上额外的4字节的掩码。相对于HTTP请求每次都要携带完整的头部,此项开销显著减少了。

更强的实时性。由于协议是全双工的,所以服务器可以随时主动给客户端下发数据。相对于HTTP请求需要等待客户端发起请求服务端才能响应,延迟明显更少;即使是和Comet等类似的长轮询比较,其也能在短时间内更多次地传递数据。

保持连接状态。与HTTP不同的是,Websocket需要先创建连接,这就使得其成为一种有状态的协议,之后通信时可以省略部分状态信息。而HTTP请求可能需要在每个请求都携带状态信息(如身份认证等)。

前后端代码实现

后台使用的是springboot,前端使用的是vue,但是原理都是类似的,以下内容
亲测可用,如果不可用,请检查你的拦截器,查看你的安全框架是否对websocket连接进行拦截。

1.pom依赖文件 (注意尽量和springboot版本保持一致(这里我的版本是2.6.3))

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
            <version>${spring-boot.version}</version>
        </dependency>
  1. 后端代码
    2.1 websocket连接通信代码
@Component
@Slf4j
@ServerEndpoint("/websocket") //暴露的ws应用的路径
public class WebSocket {
   
    // 用来存储服务连接对象
    private static Map<String ,Session> clientMap = new ConcurrentHashMap<>();
    
    // 客户端与服务端连接成功
    @OnOpen
    public void onOpen(Session session)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值