简体   繁体   English

如何使用 Ratchet 在 ssl (wss) 服务器上启用 keepAlive?

[英]How do you enable keepAlive on ssl (wss) server with Ratchet?

I have implemented a Ratchet WSS server like so:我已经实现了一个 Ratchet WSS 服务器,如下所示:

$MyServer = new MyServer();

$app = new Ratchet\Http\HttpServer(
    new Ratchet\WebSocket\WsServer(
        $MyServer
    )
);

$loop = React\EventLoop\Factory::create();

$secure_websockets = new React\Socket\Server('0.0.0.0:6190', $loop);
$secure_websockets = new React\Socket\SecureServer($secure_websockets, $loop, [
    'local_cert' => '/path/to/cert.pem',
    'local_pk' => '/path/to/privkey.pem',
    'verify_peer' => false
]);

$secure_websockets_server = new Ratchet\Server\IoServer($app, $secure_websockets, $loop);

$secure_websockets_server->loop->addPeriodicTimer(1, function () use ($MyServer) {
    // loop
}

$app->enableKeepAlive($app->loop, 30);

$secure_websockets_server->run();

The server runs fine without $app->enableKeepAlive($app->loop, 30);服务器在没有$app->enableKeepAlive($app->loop, 30);情况下运行良好$app->enableKeepAlive($app->loop, 30); , but fails once I add it. ,但一旦我添加它就会失败。

PHP Fatal error: Uncaught Error: Call to undefined method Ratchet\Http\HttpServer::enableKeepAlive() in /path/to/server-ssl.php:27

What is the correct way of wrapping the keepAlive() ?包装keepAlive()的正确方法是什么?

enableKeepAlive() is a function of WsServer class, not HttpServer. enableKeepAlive() 是 WsServer 类的函数,而不是 HttpServer。 Try the following code:试试下面的代码:

$app = new Ratchet\WebSocket\WsServer($MyServer);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM