国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

Windows環(huán)境下配置了SSL后,每隔一小時(shí)以后就會(huì)出現(xiàn)推送成功但客戶端無法收到數(shù)據(jù)的問題

無名

環(huán)境:windows 2012 r2 + php 7.4.2
不開啟SSL的時(shí)候,一切正常,連續(xù)開機(jī)測(cè)試過2天都沒問題
但是自從配置了SSL之后,每隔一個(gè)小時(shí)以后就會(huì)出現(xiàn)服務(wù)端提示推送成功,但客戶端無法收到數(shù)據(jù)的問題。
此時(shí),客戶端重啟打開瀏覽器,可以正常連接并發(fā)送心跳!服務(wù)端進(jìn)行推送,也會(huì)有數(shù)據(jù)返回。麻煩各位幫忙分析一下!非要用windows環(huán)境,我也確實(shí)搞不懂哪里出問題,才來這里進(jìn)行提問!

代碼如下

<?php
require 'vendor/autoload.php';

use Workerman\Worker;
use Workerman\Lib\Timer;
use Workerman\Connection\TcpConnection;
use GlobalData\Client as GlobalClient;
use Channel\Client as ChannelClient;

//證書
$context = array(
    'ssl' => array(
        'local_cert'  => 'D:\wss\ssl\ws.pem',
        'local_pk'    => 'D:\wss\ssl\ws.key',
        'verify_peer' => false,
    )
);
$WsWorker = new Worker('websocket://0.0.0.0:443', $context);
$WsWorker->transport = 'ssl';

$WsWorker->count = 4;
$WsWorker->name = 'WebSocket';

$WsWorker->onWorkerStart = function ($worker){
    $config = require dirname(__FILE__).'/config.php';
    $worker->apiKey = strtolower($config['api_key']);
    $worker->topics = array_map('strtolower',$config['topics']);
    $worker->global = new GlobalClient('127.0.0.1:2207');
    $worker->channel  = new ChannelClient();
    $worker->channel->connect('127.0.0.1:2206');

    Timer::add(45,function()use($worker){
        $cur_time = time();
        foreach($worker->connections as $conn){
            if(!isset($conn->lastAccessTime)){
                $conn->lastAccessTime = time();
                continue;
            }
            if($cur_time-$conn->lastAccessTime>=50){
                echo "$cur_time<>{$conn->lastAccessTime}\r\n";
                $conn->close();
            }
        }
    });

    $worker->channel->on('publish',function($data)use($worker){
        $data_json = @json_decode($data,true);
        if(error_get_last()){
            return;
        }
        $topic = strtolower($data_json['topic']);
        $title = strtolower($data_json['title']);
        $content = strtolower($data_json['content']);
        $link = strtolower($data_json['link']);
        $stock = strtolower($data_json['stock']);
        $send_data = [
            'ctrl'=>'send',
            'params'=>[
                'title'=>$title,
                'content'=>$content,
                'link'=>$link,
                'stock'=>$stock,
                'topic'=>$topic,
            ],
            'msg'=>'',
        ];
        foreach($worker->connections as $conn){
            if(isset($conn->topic) && strtolower($topic) == strtolower($conn->topic)){
                $conn->send(json_encode($send_data));
            }
        }
    });

};
$WsWorker->onMessage = function ($connection,$data){
    $connection->lastAccessTime = time();
    $worker = $connection->worker;
    $data_json = @json_decode($data,true);
    if(json_last_error()){
        $connection->close();
        return;
    }
    $ctrl = strtolower($data_json['ctrl'] ?? null);
    $params = !isset($data_json['params']) || !is_array($data_json['params']) ? array() : $data_json['params'];
    if(!$ctrl){
        $connection->close();
        return;
    }elseif($ctrl == 'bind'){
        $token = $params['token'] ?? '';
        if($token && isset($worker->global->$token) && $worker->global->$token){
            $connection->topic = $worker->global->$token;
            $connection->send('{"ctrl":"ok","data":{},"msg":""}');
            unset($worker->global->$token);
        }else{
            $connection->send('{"ctrl":"fail","data":{},"msg":"error token"}');
        }
    }
};

if(!defined('GLOBAL_START'))
{
    Worker::runAll();
}
?>
2098 1 0
1個(gè)回答

six

嘗試用nginx代理下ssl

  • 暫無評(píng)論
年代過于久遠(yuǎn),無法發(fā)表回答
??