入门指引 Server Client Process AsyncIO Memory HttpServer WebSocket 高级 其他

发布于 2015-08-09 09:52:41 | 187 次阅读 | 评论: 0 | 来源: 网络整理

在一些场景下,需要监听额外的端口提供特殊协议处理。如在HttpServer中需要监听8081端口,提供管理Server的功能。在Swoole扩展内置的服务中不支持同时处理2种协议,即使是使用了addlistener添加了多个端口也不能接受2种协议的请求包。

这时候可以使用本地监听来解决此问题,原理是在某一个worker进程内,创建stream_socket_server,并加入到swoole_event中。

$serv = new swoole_server("0.0.0.0", 9502);

$serv->on('workerstart', function($server, $id) {
    //仅在worker-0中监听管理端口
    if ($id != 0) return;
    $local_listener = stream_socket_server("tcp://127.0.0.1:8081", $errno, $errstr);
    swoole_event_add($local_listener, function($server) {
          $local_client = stream_socket_accept($server, 0);       
          swoole_event_add($local_client, function($client) {
              echo fread($client, 8192);
              fwrite($client, "hello");
          });
     });
});
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务