需求:后端有通知和待办,及时推送给前端相关用户,在页面显示提示信息。
用到技术:
1、websocket 后端推送最终使用的是websocket 前端用户登录后与后端服务器建立websocket链接
2、JFinal-event 异步执行消息推送 与主业务解耦 不能在新增一条todo待办或者notice通知后立马同步执行websocket的推送,如果系统里有1000个客户端,你得等都推送完了才能结束这个业务的响应 显然不合理。需要在todo和notice save之后 向事件处理队列或者pool里推送一个事件就立马结束这个业务,等待事件监听器起作用后异步处理。
save成功立马post一个事件。
监听器监听这个事件
监听到事件后异步执行websocket推送就行了
上效果:
如何在项目里引入JFinal-event:
1、pom.xml
版本3.1.3
2、配置插件
3、创建EventListener 写注解
package cn.jbolt._admin.event; import com.jfinal.log.Log; import cn.jbolt.common.model.SysNotice; import cn.jbolt.common.model.Todo; import net.dreamlu.event.core.EventListener; /** * JBolt 内部事件监听处理 * @ClassName: JBoltEventListener * @author: JFinal学院-小木 QQ:909854136 * @date: 2021年10月6日 */ public class JBoltEventListener { private static final Log LOG = Log.getLog(JBoltEventListener.class); /** * 全局通知事件监听处理 * @param notice */ @EventListener(async = true) public void sysNotice(SysNotice notice) { } /** * todo事件监听处理 * @param todo */ @EventListener(async = true) public void todo(Todo todo) { } }
4、找到合适的地方执行
EventKit.post(event)就行了
项目:JBolt极速开发平台