-- 作者:chen3728060
-- 发布时间:2017/3/29 9:40:00
-- 客户端OpenQQ发送长string,服务器偶尔会收不到。这个有办法妥协解决吗?
我是卖便利店收银软件的,想给我的第三方收银软件,做一个手机查账的功能。我在阿里云上做了一个OpenQQ的服务器端,顾客的本地电脑装了一个客户端。
①老板通过手机向HttpRequest发送查询请求
②然后服务器端会通过OpenQQ向客户端发送一条查询指令,例如“库存数量|查第一页|每页50条”。
③然后客户端ReceiveMessage事件收到了,就SQL查询本地的erp软件的库存数量,提取出来生成临时表。然后遍历临时表的行,把表变成一条string,例如"苹果,5|雪梨,6|香蕉,7”。客户端把这条string 发送给服务器端
④服务器端ReceiveMessage事件收到了,把和这个string转为一个表的样子
⑤HttpRequest里,用CreateFromDataTable的方法生成网页给回老板
现在有个问题OpenQQ之间传输的string,如果太长,会容易出现收不到的情况。经过我多次测试,发现这样的事情。
①服务器端发客户端,99%是没问题。因为指令很短,就是“库存数量|查第一页|每页50条”
②客户端发服务器端,如果表里的行少于15行,转生成的string不会太长,传回去服务器端99%能收到
此主题相关图片如下:qq截图20170329092314.png
③客户端发服务器端,如果表里的行超过15,或者生成的string比较长,客户端发送后,服务器端很容易收不到。但是!我把客户端只有50k上传速度的联通网线拔了,换成上传有500k的电信光纤网线,或者是移动4G热点,就又可以稳定收到。
此主题相关图片如下:qq图片20170329092502.png
④开发的时候,服务器端和客户端都在同一个电脑里时,无论怎么发,多少行提取,string多长,都是100%的收发。
是不是string太长会容易丢失?但是我开发的其他软件,经常客户端一次过保存5000多新行的表(数据库在阿里云服务器),也能保存成功,没有行的丢失。这条string,好像也就400个字符,没几个KB,怎么会传输失败?
------------------
或者我想实现的这个移动端查询第三方收银软件数据,还有其他思路解决吗?
我有想过直接装服务器端在客户电脑,移动查询直接就在客户电脑的HttpRequest上生成。但是有个很大的问题,客户都是自己的小网线,什么移动 铁通 电信都有,没有固定公网ip,跟给他搞动态域名还要搞路由器端口映射,每个客户这样搞,我太痛苦了。而且客户电脑又不注意防毒,偶尔就中个病毒又要重新搞。
[此贴子已经被作者于2017/3/29 9:43:56编辑过]
|