服务器简介
- 服务器端使用websocket协议,用socket.io的通讯方式来提供实时的信息推送;
- 服务器端通过定义多个频道和事件,来对应前端需要处理的业务,其它包括:通知前端用户信息有更新、通知前端员工新朋友有更新、通知前端A分通知有更新、通知前端B分通知有更新、通知前端公告通知有更新、通知前端绩效分消息有更新、通知前端任务消息有更新、通知前端公司所有用户信息有更新(基础数据、权限等);
- 服务器和客户端保持实时连接,一直到前端关闭或者后台运行即断开连接;
提供频道
integral:employee:+员工ID (以下称:员工频道)
示例代码:new Echo({ broadcaster: 'socket.io', host: process.env.WEBSOCKET_API }).channel('integral:employee:'+this.$store.getters.user_info.id) .listen('.server.info', (e) => { });
site:+公司ID (以下称公司频道)
示例代码:new Echo({ broadcaster: 'socket.io', host: process.env.WEBSOCKET_API }).channel('site:'+this.$store.getters.user_info.site_id) .listen('.server.siteEmployee', (e) => { });
员工频道的事件定义
通知前端用户信息有更新
事件名称:server.info
处理方式:清除user_info的缓存,重新拉取通知前端A分通知有更新
事件名称:server.msgA
处理方式:重新拉取消息通知通知前端B分通知有更新
事件名称:server.msgB
处理方式:重新拉取消息通知通知前端公告通知有更新
事件名称:server.msgInformation
处理方式:重新拉取消息通知,同时更新管理中心的公告通知前端绩效分消息有更新
事件名称:server.msgPerformance
处理方式:重新拉取消息通知通知前端任务消息有更新
事件名称:server.msgTask
处理方式:更新消息中心的任务数
公司频道的事件定义
通知前端公司所有用户信息有更新(基础数据、权限等)
事件名称:server.siteEmployee
处理方式:清除user_info的缓存,重新拉取;清除SET_EMPLOYEE_MAP重新拉取通知前端员工新朋友有更新
事件名称:server.employeeInvitation
处理方式:更新组织架构的新成员右边角标提示
前端实现方式
- 前端分为两部分实现:APP和H5端
APP存在多个窗口,它需要同时更新所有数据状态,H5则不存在这样的问题但是它存在缓存页面也要更新的问题,为了统一实现方式,使用已经定义的窗口通信(即缓存更新机制)来实现
- 需要安装依赖
npm install –save socket.io-client
npm install –save laravel-echo - laravel-echo是一个配合服务器端实现socket.io通讯的标准库,它本身依赖socket.io-client
- 在需要更新的界面上定义好相关的业务逻辑;
- 接收服务器信息后,通过$keep_alive_update方法向所有页面发送更新通知;
文档更新时间: 2020-04-27 13:35 作者:吴俊源