websocket连接发送请求,发着发着服务器端就突然接收不到消息

wenruns

前端发送心跳:
截图

服务器端截图:
截图

重启服务端的时候前一阵正常回复,然后前端1s-2s发送一次心跳,过一阵就会出现服务端接收不到数据的情况,前端还是正常发送数据。这是啥问题?

onMessage方法:

截图

handlerMessage方法:

截图

3931 5 0
5个回答

2548a

看样子像是你代码问题.
把onMessage 的 handlerMessage 屏蔽掉,不,应该是把onMessage 里面代码都屏蔽掉
直接打印调试,
echo $data;
$connection->send('已接收到消息');
return;

  • wenruns 2022-09-15

    试了一下,好像只要没有涉及到数据库操作就没问题。但是一旦有数据库操作就会出问题

  • wenruns 2022-09-15

    是不是数据库连接导致服务器端在某个位置卡住了?

  • 2548a 2022-09-15

    这个只能你自己去调试了,你问我我也没法回答你. 按我个人理解,onMessage里面,除了 $this->handlerMessage(); 其它都是没必要的,或者说叫无效代码.

wenruns

问题找到了,不知道为啥突然连接到另外一个不存在的数据库,但是我逻辑代码中没有连接这个数据库的操作。设置啥问题?
截图

  • 暂无评论
小W

handlerMessage里有直接请求数据库操作? 会不会把数据库整挂了

  • wenruns 2022-09-15

    主要是没搞明白为啥无端的连接了data这个数据库,我逻辑中没有这个操作,模型也没有。只是配置中存在这个配置

wenruns

连着连着自动就连上这个data的数据库了
截图

  • wenruns 2022-09-15

    似乎使配置中存在的配置都会自动连接,我把data配置屏蔽了好像就没问题了

wenruns

最终问题:
文件:vendor/workerman/webman-framework/src/support/bootstrap/LaravelDb.php
start方法里加了个定时器,针对mysql驱动的数据库定时去执行这个,这是为啥?
截图

加入这个LaravelDb的位置
文件:config/bootstrap.php
截图

这个是为了保持mysql连接做的吗?

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