近期在做一个小项目,里面涉及到了消息推送,因此写一篇小文章记录一下。
由于之前刚入手Web开发,对于一起都是自己摸索出来,下了wamp64直接就用原生php写了web后端。去年十一月开始学习vue,后台鉴权,权限管理等都自己搭了出来,也做了四五个小项目。到了目前为止几乎日常开发都没有太大的难度。因为有时间来整理一下后端。
从疫情爆发开始,就一直闭关看书,对js的了解也越来越多(虽然依然很菜),期间也思考过很久后端使用什么框架,考察过几乎所有php框架,觉得硬上php还得学新的框架,适应新的语言很心累。在几乎半年的时间,也对node有一定熟悉之后,让我选择了node后台。
归根到底有四条原因:
Egg.js,也考虑过ThinkJS,不过还是选择了Eggjs,原因可能是更信赖大厂吧
目前在做的是中后台项目,目前只针对于部门内部使用,而且业务流量并不高,所有后台就是一个简单的CURD和鉴权之类。定位就是RESTful API。
整个流程见官方demo,虽然官方是js版的但是和TS没有任何差异:github.com/eggjs-commu…
官方答疑:github.com/whxaxes/egg…
由于EggJS并不是TS写的,因此还存在一些小问题。目前碰到的是在做websocket的时候,要自己配置ts-helper,否则不能编译。 下方的app/io/controller就是针对使用socket.io中间件的时候的编译。
module.exports = { watchDirs: { model: { directory: 'app/io/controller', // files directory. // pattern: '**/*.(ts|js)', // glob pattern, default is **/*.(ts|js). it doesn't need to configure normally. // ignore: '', // ignore glob pattern, default to empty. generator: 'auto', // generator name, eg: class、auto、function、object interface: 'CustomController', // interface name //declareTo: 'Context.model', // declare to this interface // watch: true, // whether need to watch files caseStyle: 'lower', // caseStyle for loader // interfaceHandle: val => `ReturnType<typeof ${val}>`, // interfaceHandle // trigger: ['add', 'unlink'], // recreate d.ts when receive these events, all events: ['add', 'unlink', 'change'] } } } 复制代码
在eggjs中官方案例已经很详细,所有直接看demo就行了。在vue中其实,也差不多:
复制代码
复制代码
复制代码
复制代码
复制代码
对于部门内部的PC局域网而言,由于网络原因断开连接这种情况应该比较少,不过也不可以不考虑这种情况。