workman接收的信息大小在哪里设置呢

364021318

workman接收的信息大小在哪里设置呢
我用workman 的socket上传一张图片的时候接收不全图片的信息。

3406 5 0
5个回答

walkor

TCP是基于流的,客户端发送的请求数据是像水流一样流入到服务端,服务端探测到有数据到来后应该检查数据是否是完整的,因为可能只是一个请求的部分数据到达服务端,甚至可能是多个请求连在一起到达服务端。如何判断请求是否全部到达或者从多个连在一起的请求中分离请求,就需要规定一套通讯协议。

参考http://doc3.workerman.net/protocols/why-protocols.html。

  • 暂无评论
364021318

没有多个数据请求,只有一个请求都不行。只上传一张图片都不行

  • 暂无评论
walkor

上面没有说一定是多个请求才会出现这种情况。这个是TCP的机制,是正常的。

TCP是基于流的,客户端发送的请求数据是像水流一样流入到服务端,服务端探测到有数据到来后应该检查数据是否是完整的,因为可能只是一个请求的部分数据到达服务端

比如上传了一个文件,文件是一点一点上传到服务端的,如果没有设置通讯协议,服务端每收到数据都会触发onMessage,但是onMessage里的数据只是部分数据,需要把这些数据组装起来才是完整的数据。

如果设置了应用层通讯协议,服务端会根据协议规则判断这个文件有多大,然后每收到部分数据就将它们缓冲并拼接起来,直到收到全部数据,然后触发onMessage,这样设置了通讯协议后onMessage里的文件就是完整的了。
例如用http协议上传一个文件,根据http协议规则,http包的头部会包含这个文件的大小,服务端根据规则读取这个大小,然后将每次收到的一点数据拼接起来,最后组成一个完整的http请求,包体是文件数据,并触发onMessage,得到完整的文件数据。

参考http://doc3.workerman.net/protocols/why-protocols.html。

  • 暂无评论
364021318

上传一个1M的图片都接收不了

  • 暂无评论
walkor

其实都收到了,只是你不愿意看手册,不愿仔细看我上面的回复,自己又不会用而已

  • 364021318 2017-04-13

    我一直在看手册,你说的我不太明白,可以说的简单点的么

年代过于久远,无法发表回答
🔝