workerman 作为客户端使用,一直触发onClose.

0
<?php
use Workerman\Lib\Timer;
use Workerman\Worker;
use Workerman\Connection\AsyncTcpConnection;
use Medoo\Medoo;
//require_once __DIR__ . '/../Workerman/Autoloader.php';
include __DIR__."/Workerman/Autoloader.php";
include "Medoo.php";
class WebSocket{
private $configs = [];
private $subscribe_arr = [];
private $count = 0;
private $no_msg_count = 0;
public function __construct($configs)
{
$this->configs = $configs;
}

public function subscribe_add($sub_str){
$this->subscribe_arr = $sub_str;
}

public function subscribe_manage($con){
foreach ($this->subscribe_arr as $val){
$con->send($val);

}
}

public function subscribe_run($callback){
$GLOBALS['callback'] = $callback;

$worker = new Worker();

$wss_url = $this->configs['wss_url'];

$worker->onWorkerStart = function ($worker) use ($wss_url) {
$con = new AsyncTcpConnection($wss_url);
$con->transport = 'ssl';

Timer::add(20, function () use ($con){
to_file('ping');
$con->send('ping');

});

$con->onConnect = function($con) {
to_file('连接中');
$this->subscribe_manage($con);
//$con->send($GLOBALS['subscribe_data']);
};

$con->onMessage = function($con, $data) {
$this->no_msg_count = 0;
if (++$this->count > 100){
$this->count=0;
to_file('数据处理中...');
}
call_user_func($GLOBALS['callback'], $data);

};

$con->onClose = function ($con){
to_file('重新连接中');
$con->reconnect(5);
};

$con->connect();

};

Worker::runAll();

}
}

我是作为客户端在使用的。
使用一段时候后,大概几个小时,多的时候十几个小时,会一直触发 onClose。 一直在触发。非常快
因为to_file会记录到文件里,出现问题,每小时可以写入几个G的“重新连接中”,一直在触发onclose,不知道为什么一直连不上。
有经验的小伙伴帮看下,不胜感谢。

已邀请:

six

赞同来自:

php start.php status 看下进程是不是不断的在退出。

dignfei - 丹妮

赞同来自:

心跳

ala3246875 - 90后程序员

赞同来自:

我这是作为客户端使用的
有发送ping啊 这好像是一个bug ,一直断开 重连死循环

dignfei - 丹妮

赞同来自:

你的协议是什么都没写清楚

要回复问题请先登录注册