<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 監聽端口 [TOC] `Swoole-1.8.0`新增了對`多端口混合協議`的支持。`Server`可以監聽多個端口,每個端口都可以設置不同的協議處理方式(`set`)和回調函數(`on`)。`SSL/TLS`傳輸加密也可以只對特定的端口啟用。 * **未調用`set`方法,設置協議處理選項的監聽端口,默認繼承主服務器的設置** * **未調用`on`方法,設置回調函數的監聽端口,默認使用主服務器的回調函數** * 監聽端口返回的對象類型為`swoole_server_port` * 監聽端口的`swoole_server_port`對象,可以調用`set`和`on`方法,使用方法與`swoole_server`完全一致 * 監聽端口只能設置少量特定的選項,只能設置數據收發的相關事件回調函數 * 不同監聽端口的回調函數,仍然是相同的`Worker`進程空間內執行 > 主服務器是WebSocket或Http協議,新監聽的TCP端口默認會繼承主Server的協議設置。必須單獨調用`set`方法設置新的協議才會啟用新協議 ## 監聽新端口 ~~~ $port1 = $server->listen("127.0.0.1", 9501, SWOOLE_SOCK_TCP); $port2 = $server->listen("127.0.0.1", 9502, SWOOLE_SOCK_UDP); $port3 = $server->listen("127.0.0.1", 9503, SWOOLE_SOCK_TCP | SWOOLE_SSL); ~~~ ## 設置網絡協議 ~~~ $port1->set([ 'open_length_check' => true, 'package_length_type' => 'N', 'package_length_offset' => 0, 'package_max_length' => 800000,] ); $port3->set([ 'open_eof_split' => true, 'package_eof' => "\r\n", 'ssl_cert_file' => 'ssl.cert', 'ssl_key_file' => 'ssl.key',] ); ~~~ ## 設置回調函數 ~~~ $port1->on('connect', function ($serv, $fd){ echo "Client:Connect.\n"; }); $port1->on('receive', function ($serv, $fd, $from_id, $data) { $serv->send($fd, 'Swoole: '.$data); $serv->close($fd); }); $port1->on('close', function ($serv, $fd) { echo "Client: Close.\n"; }); $port2->on('packet', function ($serv, $data, $addr) { var_dump($data, $addr); }); ~~~ ## Http/WebSocket `swoole_http_server`和`swoole_websocket_server`因為是使用繼承子類實現的,無法通過調用`swoole_server`實例的`listen`來方法創建`Http/WebSocket`服務器。如果服務器的主要功能為`RPC`,但希望提供一個簡單的Web管理界面。 在這樣的場景中,可以先創建`Http/WebSocket`服務器,然后再進行`listen`監聽`RPC服務器`的端口。 #### 實例 ~~~ $http_server = new swoole_http_server('0.0.0.0',9998); $http_server->set(array('daemonize'=> false)); $http_server->on('request','request'); //......設置各個回調...... //多監聽一個tcp端口,對外開啟tcp服務,并設置tcp服務器的回調 $tcp_server = $http_server->addListener('0.0.0.0', 9999, SWOOLE_SOCK_TCP); //默認新監聽的端口 9999 會繼承主服務器的設置,也是 Http 協議 //需要調用 set 方法覆蓋主服務器的設置 $tcp_server->set(array()); $tcp_server->on("receive", function ($serv, $fd, $threadId, $data) { echo $data; }); ~~~ 通過這樣的代碼,我們便可以建立一個同時對外提供http服務,又同時對外提供tcp服務的server,具體更加的優雅代碼組合則由你自己來實現。 ## TCP、Http、WebSocket 多協議端口復合設置 ~~~ $port1 = $server->listen("127.0.0.1", 9501, SWOOLE_SOCK_TCP); $port1->set([ 'open_websocket_protocol' => true, // 設置使得這個端口支持 webSocket 協議 ]); ~~~ ~~~ $port1 = $server->listen("127.0.0.1", 9501, SWOOLE_SOCK_TCP); $port1->set([ 'open_http_protocol' => false, // 設置這個端口關閉http協議功能 ]); ~~~ 同理還有:`open_http_protocol`、`open_http2_protocol`、`open_mqtt_protocol`等參數
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看