工业级生产网络编程的流程做法是将一个socket在应用成对应一个sockitem结构体。具体流程如下:
对于业务处理在recv_cb回到函数中处理相关的业务。
1 websocket应用场景
websocket典型的应用场景:
对于一般服务器主动推送信息给客户端可选中websocket协议
常用于网页聊天,即时通讯,弹幕等。
2 websocket协议数据帧
如下图是websocket协议帧
包括三部分:操作玛,掩码,数据长度
长度三种情况:
1: 0~125 1个字节
2: 126~2^23
3: 127~2^71
3 封装websocket协议
websocket三部分组成:
1 握手数据
2 通信(握手成功后)
3 终止
编码实现的时候,无法通过该recv_cb接收到的数据,判断处理。对于流程化的东西,引入状态机来处理上层业务
对于参考nginx中的也是引入了状态机来处理的。
4 扩展设计自定义协议tcp核心点
1 操作码 fin,handshark等
2 包长度 tcp分包粘包问题 解决方案:添加包长度和包分隔符
3 mask_key 加密传输, 不做明文传输
4 payload data json/xml,protobuf等 应用层格式