您的位置 首页 php

Spring Boot 集成 socket.io 后端实现消息实时通信

概述


socket.io

socket.io: 是一个面向实时 web 应用的 JavaScript 库。它使得服务器和客户端之间实时双向的通信成为可能。他有两个部分:在浏览器中运行的客户端库,和一个面向Node.js的服务端库。两者有着几乎一样的API。像Node.js一样,它也是 事件驱动 的.

Socket.IO 主要使用WebSocket协议。但是如果需要的话,Socket.io可以回退到几种其它方法,例如Adobe Flash Sockets ,JSONP拉取,或是传统的 AJAX 拉取,[2]并且在同时提供完全相同的接口。尽管它可以被用作WebSocket的包装库,它还是提供了许多其它功能,比如广播至多个 套接字 ,存储与不同客户有关的数据,和异步IO操作。


项目搭建

引入依赖包

Java

创建服务端类 SocketServer

Java

Java

  1. initServer 方法 初始化服务端本地 9090 端口;

  2. startServer 方法中,添加一系列事件监听器,并根据事件作出响应;

  3. 通过 server.start() 启动服务端,server.stop() 停止服务端;

创建客户端类 SocketClient

Java

Java

Java

Java

Java

Java

Java

  1. 通过 initSocket 初始化客户端,初始化地址 ;

  2. 通过 new ScheduledThreadPoolExecutor(10),初始化任务调度 线程池

  3. 使用 Map 用于存放每个进来任务的 future ,key:为任务id,value:future,目的是为了可以通过条件控制任务,通过接口调用可以 cancel 对应的 future;

  4. 通过 connectSocket 连接服务端,并调用 addConnectListenerEvent 添加一些列监听事件;

  5. 通过 startClient 启动任务。

  6. 通过 HandleMessageRunnable 类实现具体消息的处理。

创建定时任务调度控制器 ScheduledController

Java

Java

  1. 调用 {id}?startTime=yyyyMMddHHmmss 接口可以控制指定任务在指定时间开始执行;

  2. 调用 {id} 取消指定任务;

  3. 调用 可以手动接收当前在执行的所有任务,scheduledExecutorService.shutdown() 不会强制所有任务立即停止,而是会在正在执行的本次任务执行完后才 shutdown;

  4. 这里使用到了 @Scheduled ,需要到 Application 类中的加上 @EnableScheduling 注解以开启定时任务;

  5. stopClient 方法可以定时结束所有任务,以节省资源,这个根据业务自身决定是否需要。

修改 Appingcation 类


运行效果

  1. 启动项目

  2. 调用 {id}?startTime=yyyyMMddHHmmss 接口启动任务。

Java

3.查看控制台信息,注意 2 的时间和现在的时间,未到时间:

Java

到时间:

Java

4.再次调用 {id}?startTime=yyyyMMddHHmmss 加入新任务:

Java

Java

5.{id},可以取消任务。

6. 结束所有任务。

以上所述是小编给大家介绍的Spring Boot 模块组成,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的!

Java学习资料(复制下段链接至浏览器即可)

data:textml;charset=UTF-8;base64,5oGt5Zac5L2g77yM5p625p6E5biI5a2m5Lmg576k5Y+35pivNjg2NTc5MDE0Cg==

Java

文章来源:智云一二三科技

文章标题:Spring Boot 集成 socket.io 后端实现消息实时通信

文章地址:https://www.zhihuclub.com/80172.shtml

关于作者: 智云科技

热门文章

网站地图