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

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

walkor

赞同来自: 254135495

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

参考workerrman手册协议部分

364021318

赞同来自:

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

walkor

赞同来自:

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

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



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

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

参考workerrman手册协议部分

364021318

赞同来自:

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

walkor

赞同来自:

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

要回复问题请先登录注册