最近用 nodejs 做一个代理,这个代理比较特殊的一点是,服务器和客户端之间只能建立一个 tcp 连接(因为建立连接的成本很高),而客户端上使用代理的程序(如浏览器)可能会尝试向本地代理 127.0.0.1:XXX 建立多个连接。
我考虑的一个解决方案是,客户端收到数据之后,在数据前面加上一个字段表示端口,发给服务器,服务器据此处理、收到数据后,也在数据前面加上端口并返回给客户端。
那么问题来了:
client.on('data',data=>{...});
我需要知道这段 data 是完整的,否则没办法提取发送时附带在“头部”的内容。
那么是不是说,我远端 write 一个 buffer 进来,这里的 data 就一定是收到完整的那一段 Buffer 呢?如果不是的话,一般是怎么判断我收到的数据已经完整了呢?
我考虑的一个解决方案是,客户端收到数据之后,在数据前面加上一个字段表示端口,发给服务器,服务器据此处理、收到数据后,也在数据前面加上端口并返回给客户端。
那么问题来了:
client.on('data',data=>{...});
我需要知道这段 data 是完整的,否则没办法提取发送时附带在“头部”的内容。
那么是不是说,我远端 write 一个 buffer 进来,这里的 data 就一定是收到完整的那一段 Buffer 呢?如果不是的话,一般是怎么判断我收到的数据已经完整了呢?