Please enable JavaScript.
Coggle requires JavaScript to display documents.
FD-JS-Net (网络协议 (2.1 封包 (pack--负责把包头和包体组合到一起,超大包的截断发送 (使用数据复合模式,arraybuffe…
FD-JS-Net
网络协议
2.1 封包
pack--负责把包头和包体组合到一起,超大包的截断发送
使用数据复合模式,arraybuffer视图和UInt32array+uint8array
2.2 解包
unpack--收到的消息进行解包,根据包头提供的数据长度获取数据,通过id将数据传入对应模块处理
2.3 协议大小端
goServer默认的好像是小端,这里数据接收看是哪边修改更方便,进行对应的修改
2.4 协议格式
Head+Body
Head
DataLength
MsgID
Body
uint8Array
网络数据
3.1 数据的收发
接收数据最好放在线程中
收到处理好的数据放到数据缓存区,逻辑线程取出来使用
发送数据可以使用发送缓存区
封好的包放入发送缓冲区或者直接发送给服务器
3.2 数据的存放
数据模块单独拎出来处理,所有玩家的数据都放到这个模块
需要一个数据池来管理别的玩家数据
自己的数据可以独立出来,不用查找,提高效率
3.3 数据的更新
所有数据都在数据模块更新
使用回调方式,监听者模型来处理V层的显示变化
每个View层模块注册监听相关的数据,当数据有变化是,调用每个模块对应的更新方法
3.4 数据的使用
为每个数据提供查询接口
网络连接
1.1 websocket
使用websocket与服务器建立连接
1.2 多连接socket管理
会有2个以上的socket连接同时保持
Chat Socket
Game Socket
1.3 连接模式和数据
websocket连接是tcp方式
js连接后设置数据接收类型binaryType为ArrayBuffer模式,默认的会是二进制数据,需要通过处理转换才能使用,所以我们直接选择不需要处理的arrayBuffer模式
缓存
4.1 消息的缓存
对消息进行缓存,以便切图或者有延迟使用的消息
两种方式
一种是切图时把所有的消息按顺序存储
一种是放入定时包中,到时间后执行消息逻辑
4.2 数据的缓存
数据缓存和数据模块相关,一些玩家的数据要放入缓存中管理,当角色离开视野或者销毁后,数据清除