概述
socket.io
socket.io: 是一个面向实时 web 应用的 JavaScript 库。它使得服务器和客户端之间实时双向的通信成为可能。他有两个部分:在浏览器中运行的客户端库,和一个面向Node.js的服务端库。两者有着几乎一样的API。像Node.js一样,它也是 事件驱动 的.
Socket.IO 主要使用WebSocket协议。但是如果需要的话,Socket.io可以回退到几种其它方法,例如Adobe Flash Sockets ,JSONP拉取,或是传统的 AJAX 拉取,[2]并且在同时提供完全相同的接口。尽管它可以被用作WebSocket的包装库,它还是提供了许多其它功能,比如广播至多个 套接字 ,存储与不同客户有关的数据,和异步IO操作。
项目搭建
引入依赖包
创建服务端类 SocketServer
initServer 方法 初始化服务端本地 9090 端口;
startServer 方法中,添加一系列事件监听器,并根据事件作出响应;
通过 server.start() 启动服务端,server.stop() 停止服务端;
创建客户端类 SocketClient
通过 initSocket 初始化客户端,初始化地址 ;
通过 new ScheduledThreadPoolExecutor(10),初始化任务调度 线程池 ;
使用 Map 用于存放每个进来任务的 future ,key:为任务id,value:future,目的是为了可以通过条件控制任务,通过接口调用可以 cancel 对应的 future;
通过 connectSocket 连接服务端,并调用 addConnectListenerEvent 添加一些列监听事件;
通过 startClient 启动任务。
通过 HandleMessageRunnable 类实现具体消息的处理。
创建定时任务调度控制器 ScheduledController
调用 {id}?startTime=yyyyMMddHHmmss 接口可以控制指定任务在指定时间开始执行;
调用 {id} 取消指定任务;
调用 可以手动接收当前在执行的所有任务,scheduledExecutorService.shutdown() 不会强制所有任务立即停止,而是会在正在执行的本次任务执行完后才 shutdown;
这里使用到了 @Scheduled ,需要到 Application 类中的加上 @EnableScheduling 注解以开启定时任务;
stopClient 方法可以定时结束所有任务,以节省资源,这个根据业务自身决定是否需要。
修改 Appingcation 类
运行效果
启动项目
调用 {id}?startTime=yyyyMMddHHmmss 接口启动任务。
3.查看控制台信息,注意 2 的时间和现在的时间,未到时间:
到时间:
4.再次调用 {id}?startTime=yyyyMMddHHmmss 加入新任务:
5.{id},可以取消任务。
6. 结束所有任务。
以上所述是小编给大家介绍的Spring Boot 模块组成,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的!
Java学习资料(复制下段链接至浏览器即可)
data:textml;charset=UTF-8;base64,5oGt5Zac5L2g77yM5p625p6E5biI5a2m5Lmg576k5Y+35pivNjg2NTc5MDE0Cg==