自定义协议粘包问题

我在gateway里用自定义tcp协议,参考text协议写的,区别就是text协议用的\n作为结束符,我是用的5555作为结束符。。。老大说,text协议不会粘包,但是为啥我用5555结尾就粘包呢?客户端是智能电器,可能因网络不稳定导致的粘包。 我在input($buffer)中,只return一个包的长度,但是在encode($buffer)中,还是会同时把两个包一起发过来。 ...

lxping 发表与 2020-02-27 2180 浏览 2 回答
用workerman代替redis

redis优点主要是内存读取和本地持久化,但提供的数据类型太简单,只能字符串和一维key的操作。所以做做简单的存储和并发检索还是可以的,但是要想更复杂的功能,我们就要基于redis做封装。 那么,如果用workerman来开发仿造一个redis,php-frm直接连接worker进程中的内存变量,两者都是常驻内存,数据也都是在内存中的,就像Gateway::bindUid一样的原理,岂不是更爽。 暂且不管redis的...

lxping 发表与 2020-02-27 3136 浏览 1 回答
Events判断从哪个协议进来的

一个BusinessWorker对应多个geteway时,如何在Events.php中知道geteway是什么协议方式?...

lxping 发表与 2020-02-26 1476 浏览 1 回答
Events和自定义协议文件,如何放到项目文件夹外面?

想多个项目共用Events.php和Protocols/a.php,但是提示找不到类...

lxping 发表与 2020-02-26 1579 浏览 1 回答
能否一个BusinessWorker管理多个Gateway?

我们有不同类型的硬件设备,想每种设备连接不同的Gateway端口。因为没有大面积测试过,请教下,如果只开一个register和BusinessWorker来管理多个Gateway,有没有什么隐患?...

lxping 发表与 2020-02-25 1801 浏览 1 回答
在websocket的onWorkerStart方法中,能否发送send到客户端?

需求是这样的,在onWorkerStart中,定时检测并异步执行耗时任务,当有客户端连接ws时,可以实时获取该进程任务的执行日志。 目前我采用的方案是文件和redis这样的中间件。我在想,既然timer和websocket同属于一个进程,那么能否不用中间件,直接在onWorkerStart里发送send给客户端呢?...

lxping 发表与 2020-02-19 2264 浏览 1 回答
如何获取ws的get参数

请问下,如何在workerman中获取到ws://127.0.0.1:8282/?type=1的get参数? ...

lxping 发表与 2020-02-19 3037 浏览 1 回答
跪求,邮件群发如何提高效率?

由于邮件发送比较耗时,所以我用AsyncTcpConnection异步任务,但由于workerman是多进程单线程,那么在如下场景中,该如何提高并发效率呢? 场景: 有2个耗时任务需要在同一时间执行,其中一个是邮件群发,假设要发送1000个邮件,任务进程100个。 方案疑问: 1、1000个邮件分别通过AsyncTcpConnection发送给100个进程。这种方案会因为100个进程被占满,而导致另一个任务必须等待1...

lxping 发表与 2020-02-18 1942 浏览 2 回答
求解,windows下,开启了多进程,协议还是堵塞的原因

不知道哪里写的不对,设置了4个进程,同时打开3个网页,每个等待10s,结果总时长需要30s,求大神帮忙解释下,谢谢了 下图是http: 下图是websocket ...

lxping 发表与 2020-02-07 2011 浏览 1 回答
gatewayworker每次重启,client_id都是从固定的1开始

下面两个图是我分别重启后截图,默认都是从client_id=1开始递增。 这样是不是一旦项目上线后,就不能关闭重启了,只能通过平滑重启,不然clietn_id与数据库的uid对不上了?或者有没有其他解决办法? 查看源码发现,client_id是通过ip+端口+connection_id的16进制,connection_id是当前连接数,所以workerman重启后,connection_id就从1重新开始计算了。 /...

lxping 发表与 2019-12-31 3912 浏览 1 回答

lxping

633
积分
0
获赞数
0
粉丝数
2019-12-27 加入
🔝