http和tcp的包边界沟通方式

yaxiaomu

看源代码发现如果启一个HttpServer,Http客户端发起请求后,HttpServer端可以在onMessage 回调中,传递一个tcp的连接,并进行指定protocol(就是http的parser)的相关encode和decode方法。

我想请问的是:

http 客户端(假设为浏览器)发送一个request请求,workman的httpServer 和 http 客户端(假设为浏览器)如何知道对端请求参数的边界和大小?是根据content-length吗?
查阅相关资料说在keepalive下一般为chunked方式?workman有类似处理机制吗?
据我的理解tcp客户端和服务端之间可以通过简单的确认序列号的大小可以判断消息的字节数,那浏览器和http服务端再到tcp的connection之间是怎么确定包大小的?
就是我httpserver不停的收,问题是不知道客户端的数据发完了没有?怎样判断?另外,就是服务端接收完后,再向客户端发送数据,客户端又怎样知道服务器端发送完响应数据呢?

谢谢各位,好困扰~

2701 1 1
1个回答

walkor

http协议有自己的规则,http头用\r\n\r\n分割,如果有包体则http头一般会有content-length字段标记包体长度。

workerman目前不支持chunked

  • 暂无评论
年代过于久远,无法发表回答
🔝