doubi12138 2014-02-08 19:43
浏览 21
已采纳

关闭棘轮IOServer

Is there a method of terminating IOServer's loop?

I'm using WebSockets as a hacky inter-app communication system (believe me, if I could use anything else, I would), but I can't break out of the loop and continue my application after calling run() on IOServer.

Do I need to subclass IOServer into TerminatableIOServer or does this feature already exist?

  • 写回答

1条回答 默认 最新

  • dongyong8098 2014-02-08 20:04
    关注

    Call stop() on the IOServer's loop.

    Launcher.php

    namespace MyApp;
    
    use Ratchet\Server\IoServer;
    use Ratchet\Http\HttpServer;
    use MyApp\Server;
    
    $server = IoServer::factory(
        new HttpServer(
            new WsServer(
                new Server('stopCallback')
            )
        ),
        $this->port()
    );
    
    $server->run();
    
    echo "if the server ever determines it should close, this will be printed.";
    
    
    // when loop completed, run this function
    function stopCallback() {
        $server->loop->stop();
    }
    

    Server.php

    namespace MyApp;
    
    use Ratchet\MessageComponentInterface;
    use Ratchet\ConnectionInterface;
    
    class Server implements MessageComponentInterface {
        protected $callback;
    
        public function __construct($callback) {
            $this->callback = $callback;
        }
    
        // custom function called elsewhere in this class whenever you want to close the server.
        protected function close() {
            call_user_func($this->callback);
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算