20210504关于我所实现的server端人工智障 - ziyouzy/2021blog GitHub Wiki
刚才打印出来的其实是另一个完全不同的事,不过这个完全不同的事也已经总结除了结果,那就是再client模拟器那边初期只是先心跳包即可,最多最多在实现一个"被事务包裹的事件"这样的数据结构,从而与server端对接(测试)
现在回到正题,而server端自身的人工智障都需要包含具体哪些内容呢?
重点在于不该用内容这个词,而应该用**动作(行动)**这个词,正式开始总结:
1.由于检测到conn的客户端主动断开event,析构某个river 2.由于检测到conn的服务端主动断开event,析构某个river 3.由于检测到conn的服务端server层的报错断开event,析构某个river 4.由于检测到conn的服务端river层的报错断开event(如心跳包超限,或crc检验失败超限),析构某个river
重点来了,我似乎应该先想清楚除了析构某个river之外还可能会做哪些事:
-
动作 a.主动析构river
-
记录 a.日志 b.mysql c.sms d.fmt.Println
-
将event发送给client
-
将evnet先转化为smsEntity发送给用户手机
用户手机的sms也是一个客户端,只要是客户端,发送event给他就是合理的这逻辑有些混乱sms的定位其实是和录入mysql,录入log,甚至直接fmt.Println的地位是一致的而超限将来是flutterUI客户端所发来事务实体,超限有个特点,那就是必然会发送短信报警,
那么是将“事务entity”直接转化成“smsEntity”呢,还是事务entity->事件entity->smsentity呢? 答案是直接转换,或者说其实是这样的:“超限事务entity”同步转换成“smsEntity”以及“mysqlEntity”过程中如果出现问题则会生成对应的event而eventEvent如果有逻辑需求同样可以实现“eventEntity”同步转换成“smsEntity”以及“mysqlEntity”这样的操作
因此要先去分出哪些是真的需要以event形式发送短信的东西,最起码,超限并不属于
同时似乎还可以总结一下event不会去直接做些什么:
- 不会直接开门,直接开门隶属clent所发来事务的职责,但是开门事务完成后会生成event并对其进行后续处理
- 不会直接修改系统配置,理由同上,但是事务完成后同上 ps:即使天窗监测到火灾,也是前端先检测到,然后发送给后端相应的事务实体来让所有天窗与门敞开,依然不会存在诸如event直接去开门这样的情况