Swoole源码中如何高效查询特定Websocket连接状态?

2026-03-27 06:470阅读0评论SEO基础
  • 内容介绍
  • 相关推荐

本文共计922个文字,预计阅读时间需要4分钟。

Swoole源码中如何高效查询特定Websocket连接状态?

问题:我们项目的Websocket Server使用的Swoole,最近在搭建beta环境的时候发现Websocket协议虽然升级成功了,但会出现定时重连、心跳、数据也一直没发送的问题。项目的生产环境和beta环境

问题

Swoole源码中如何高效查询特定Websocket连接状态?

我们项目的 Websocket Server 使用的 Swoole,最近在搭建 beta 环境的时候发现 Websocket 协议虽然升级成功了,但是会出现定时重连,心跳、数据也一直没有发送。项目的生产环境和 beta 一致,但是生产环境确没有这个问题。

定位问题

为了方便调试 Swoole,以下测试是在本地环境下进行。

查看 PHP 日志

在 PHP 日志里,发现一条错误日志: ErrorException: Swoole\WebSocket\Server::push(): the connected client of connection[47] is not a websocket client or closed,说明 Websocket 连接已经 close 了。

抓包

既然连接被 close 掉了,那我们来看看是谁主动关闭的连接。

阅读全文

本文共计922个文字,预计阅读时间需要4分钟。

Swoole源码中如何高效查询特定Websocket连接状态?

问题:我们项目的Websocket Server使用的Swoole,最近在搭建beta环境的时候发现Websocket协议虽然升级成功了,但会出现定时重连、心跳、数据也一直没发送的问题。项目的生产环境和beta环境

问题

Swoole源码中如何高效查询特定Websocket连接状态?

我们项目的 Websocket Server 使用的 Swoole,最近在搭建 beta 环境的时候发现 Websocket 协议虽然升级成功了,但是会出现定时重连,心跳、数据也一直没有发送。项目的生产环境和 beta 一致,但是生产环境确没有这个问题。

定位问题

为了方便调试 Swoole,以下测试是在本地环境下进行。

查看 PHP 日志

在 PHP 日志里,发现一条错误日志: ErrorException: Swoole\WebSocket\Server::push(): the connected client of connection[47] is not a websocket client or closed,说明 Websocket 连接已经 close 了。

抓包

既然连接被 close 掉了,那我们来看看是谁主动关闭的连接。

阅读全文