在springboot+vue中使用socketio进行私聊群聊

该文章介绍了如何在SpringBoot后端和Vue.js前端应用中利用Socket.IO库创建私聊和群聊功能。Socket.IO是一个实时应用框架,支持WebSocket等协议,确保双向实时通信。文章详细讲解了SpringBoot配置Socket.IO服务器、用户缓存管理以及Vue.js客户端的连接和消息发送方法。
摘要由CSDN通过智能技术生成

随着实时通信需求的增加,开发人员寻求有效的解决方案来实现即时通讯功能。在这篇博客中,我们将介绍如何在Spring Boot和Vue.js应用程序中使用Socket.IO库实现私聊和群聊功能。Socket.IO是一个基于Node.js的实时应用程序框架,它为客户端和服务器之间提供了双向的实时通信。

Socket.IO官方中文文档

Socket.IO和其在实时通信中的作用

Socket.IO是一个基于Node.js的实时应用程序框架,旨在实现实时、双向的通信。它通过使用WebSocket协议提供了一种简单而强大的方式,使服务器和客户端能够进行实时通信。

什么是Socket.IO?

Socket.IO是一个开源的JavaScript库,可在客户端和服务器之间建立持久的、双向的通信通道。它允许实时数据传输,不需要客户端发起请求来获取更新的数据。Socket.IO支持多种传输协议,包括WebSocket、轮询和长轮询等,以确保在各种环境下都能实现实时通信。

Socket.IO的优势和特点
  • 实时性:Socket.IO基于WebSocket协议,通过建立持久的双向连接,能够实现实时的双向通信,使得服务器能够主动推送数据给客户端。

  • 跨平台和跨浏览器:Socket.IO可用于Web、移动设备和桌面应用程序,支持多种平台和浏览器,具有广泛的兼容性。

  • 自适应传输:Socket.IO可以根据环境自动选择最佳的传输协议,包括WebSocket、轮询和长轮询等,以确保在各种网络条件下都能进行实时通信。

  • 容错性和可靠性:Socket.IO具备自动重新连接、心跳检测和故障恢复等机制,能够处理网络中断或其他故障情况,并保持通信的可靠性。

  • 简单易用:Socket.IO提供了简单而灵活的API,使得开发人员能够轻松地构建实时应用程序,并处理客户端和服务器之间的实时数据传输。

Spring Boot服务端

引入依赖

<dependency>
    <groupId>com.corundumstudio.socketio</groupId>
    <artifactId>netty-socketio</artifactId>
    <version>1.7.7</version>
</dependency>

在yml中配置属性

socketio:
  host: localhost
  port: 3000
  # 设置最大每帧处理数据的长度,防止他人利用大数据来攻击服务器
  maxFramePayloadLength: 1048576
  # 设置http交互最大内容长度
  maxHttpContentLength: 1048576
  # socket连接数大小(如只监听一个端口boss线程组为1即可)
  bossCount: 1
  workCount: 100
  allowCustomRequests: true
  # 协议升级超时时间(毫秒),默认10秒。HTTP握手升级为ws协议超时时间
  upgradeTimeout: 1000000
  # Ping消息超时时间(毫秒),默认60秒,这个时间间隔内没有接收到心跳消息就会发送超时事件
  pingTimeout: 6000000
  # Ping消息间隔(毫秒),默认25秒。客户端向服务器发送一条心跳消息间隔
  pingInterval: 25000

创建Socket.IO配置类

@Configuration
public class SocketIOConfig implements InitializingBean {
   

    @Resource
    private SocketIOHandler socketIOHandler;

    @Value("${socketio.host}")
    private String host;

    @Value("${socketio.port}")
    private Integer port;

    @Value("${socketio.bossCount}")
    private int bossCount;

    @Value("${socketio.workCount}")
    private int workCount;

    @Value("${socketio.allowCustomRequests}")
    private boolean allowCustomRequests;

    @Value("${socketio.upgradeTimeout}")
    private int upgradeTimeout;

    @Value("${socketio.pingTimeout}")
    private int pingTimeout;

    @Value("${socketio.pingInterval}")
    private int pingInterval;


    @Override
    public void afterPropertiesSet() throws Exception {
   
        SocketConfig socketConfig = new SocketConfig();
        socketConfig.setReuseAddress(true);
        socketConfig.setTcpNoDelay(true);
        socketConfig.setSoLinger(0);

        com.corundumstudio.socketio.Configuration configuration = new com.corundumstudio.socketio.Configuration();
        configuration.setSocketConfig(socketConfig);
        // host在本地测试可以设置为localhost或者本机IP,在Linux服务器跑可换成服务器IP
        configuration.setHostname(host);
        configuration.setP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值