recv出来的buffer存储着http、websocket的协议,对协议的解析
1.websocket协议主要是用来浏览器和服务器做一个长连接,例如csdn的微信登录:
1.扫码,信息就传到微信的服务器 2.微信服务器就传信息到csdn服务器 3.csdn的服务器主动发送数据到网页前端,csdn主动发信息到网页前端,这一步就是websocekt做的,之前都是http请求 (服务器主动发送数据给浏览器或前端的时候,可以选择websocket)
2.websocket适用场景:
1.网页聊天,即时通信 2.直播弹幕信息 3.股票的信息,微博信息
3.websocket协议返回的数据包
1)request:
- 建立好tcp协议后,客户端发送给服务器的一段握手数据
http 对应1.1的版本 host 对应的哪个服务求 connection 连接的方式,upgrade升级的意思 upgrade:websocket,这里是客户端主动发送给服务器的握手数据 sec-web-socket-key:这段是base64的编码 握手怎么形成的?
1。 2)response:
4.websocket的三个状态(通过状态机识别状态)
1)建立连接 2)通信 3)断开连接
enum WEBSOCKET_STATUS {
WS_INIT;
WS_HANDSHANK,
WS_DATATRANSFORM,
WS_DATAEND,
};
struct sockitem {
int sockfd;
int (*callback)(int fd, int events, void *arg);
char recvbuffer[BUFFER_LENGTH];
char sendbuffer[BUFFER_LENGTH];
int rlength;
int slength;
int status;
};
|