关于webman+gateway的运行中修改控制器代码导致gateway的tcp客户端掉线的问题

积极废人

问题描述

大佬们 请教个问题,我用的webman+gateway

现在是涉及到一个更新控制器代码 gateway的tcp链接掉线的问题, 一更新代码 进程重启,tcp客户端硬件就掉线了,然后有时候服务器或TCP客户端都显示链接成功,但是无法通讯。

目前是因为我要开着tcp和硬件进行开发,每次一更新代码以后,都要stop一下 然后等5-10秒再start一下。

如果是debug模式下,就要先停止,然后等5-10秒再start一下。

求救 求救 求救

测试

debug模式还是正常模式都测试过,掉线是偶然现象,但是频率很高。
我修改的代码是app/控制器下的代码 非plugin/Events.php

诉求

请问应该如何实现 更新app/控制器下的代码 能实现热更新,但gateway不重启进程的方法(或tcp不掉线的方法(注:无法更改硬件,只能从server下手)),感谢各位大佬。

527 2 0
2个回答

walkor

代码更新,gateway进程不会重启。
php start.php status 能看到哪些进程有重启过

  • 积极废人 2023-04-09

    大佬 这个是又开了四个进程,还是重启的进程? 我本地ide修改文件保存的时候,文件上传,他就提示进程启动了,这个进程启动的echo是我写到eve.php的onWorkerStart里面的

  • walkor 2023-04-09

    看不懂你表达的意思

  • 积极废人 2023-04-10

    就是我本地ide更新保存的时候,配置了自动上传到服务器,然后服务器那边就自动update and reload了。然后我这边的eve.php 就又执行了onWorkerStart。导致我的tcp客户端掉线了。。。

  • walkor 2023-04-10

    要更新代码businessWorker必须要重启的,gateway不会重启,所以客户端不会掉线,如果掉线了可能是你event.php里做了什么业务逻辑。或者gateway进程没设置 reloadable为false
    看下
    截图
    gateway进程是否设置了reloadable为false。

    要载入新的业务代码,businessWorker必须要重启,event.php必须要重新载入执行

  • 积极废人 2023-04-10

    老大感谢,这个地方是默认的false 没有改过,刚看了一下 是false。但是确实是连接不上了,刚刚我又确认了一下,然后-d还是debug模式下 PID没有变,然后设备掉线了,events.php没有什么业务逻辑,只是把客户端绑定了个uid,然后每次接收到的数据都转到控制器进行业务处理了。

  • walkor 2023-04-10

    gateway没重启,那就不是gateway导致的。
    业务有个报错解决下,应该是某个进程执行不到Events::onMessage,可能是DiyWorker,把没用的进程去掉吧。
    截图

    想下设备以及服务端是否有进入某个条件就断开连接的逻辑。本地没环境,其它的帮不上忙了

积极废人

截图

  • 暂无评论
年代过于久远,无法发表回答
🔝