ホームページ >バックエンド開発 >PHPチュートリアル >swooleを使ってサーバーを作成する方法(その2)

swooleを使ってサーバーを作成する方法(その2)

不言
不言オリジナル
2018-07-11 13:42:512078ブラウズ

この記事では、主に swoole を使用したサーバーの作成 (その 2) を紹介しますが、これは一定の参考価値がありますので、皆さんに共有します。必要な友人は参考にしてください。

1. HttpServer を作成するserver

HttpServer は swoole_server に基づいているため、swoole_server の下のメソッド HttpServer を使用できます
httpsevrer クライアント

# によってのみ呼び出すことができます

swooleを使ってサーバーを作成する方法(その2)

##1. Test

<?php $http = new swoole_http_server("0.0.0.0", 8811);

$http->on('request', function($request, $response) {
    echo 'nihao';
    $response->end('hello swoole');
});

$http->start();
php を実行してブラウザを開きます


swooleを使ってサーバーを作成する方法(その2)

Server


swooleを使ってサーバーを作成する方法(その2) ##ここで奇妙な現象が見つかりました

##1. echo(var_dump,print_rd) の内容がサーバー上に表示されます


##2. ブラウザの内容はpass through end(content)
end は 1 回だけ呼び出すことができます。クライアントにデータを複数回送信する必要がある場合は、書き込みメソッド
Extension を使用してください。これは、私たちが通常アクセスする XXX とよく似ています。.com:80 以下のファイルにアクセスしたい場合はどうすればよいでしょうか? 以前に tcp と udp の両方で使用した関数セットを思い出しますか? この関数は構成として理解していますので、構成します

$http->set([
      'enable_static_handler' => true,
      'document_root' => "/www/wwwroot/server",//设置根目录这里根据你自己的路径来写
    
]);
それは仮想アドレスの構成と非常に似ていますか? ?サーバー ディレクトリの test.html


## にアクセスしてみます!!

通常、

document_rootswooleを使ってサーバーを作成する方法(その2) の http_server

が設定されています。プロセス

は次のようになります:
1. まず、URL に従って document_root の相対パスにあるファイルにアクセスします。これは、アクセスするドメイン名を設定する原理と同様です。 2. このファイルが「いいえ」の場合、http_server は $http->on('request'function($request, $response)); を実行し、対応する応答を行います
#2. WebSocket サーバーの作成
1. 機能:


(1) HTTP プロトコルには欠陥があります: 通信はクライアントによってのみ開始でき、サーバーはアクティブに通信を開始できません。情報をクライアントにプッシュします。

WebSocket の最大の特徴は、サーバーがクライアントに能動的に情報をプッシュできること、そしてクライアントも能動的にサーバーに情報を送信できるという、真の双方向の対等な対話であり、サーバー プッシュ技術の一種です。

(2)Web_Socket は http_server


web_server
全二重
の機能を継承しているため、チャット ルームに非常に適しています
swooleを使ってサーバーを作成する方法(その2) ####2 . そういえば、簡単なテストをしてみましょう!

(1) まず web_server.php ファイルを書きましょう

$server = new swoole_websocket_server("0.0.0.0", 8811);
//Web_Socket继承http_server,所以它也可以拥有同样的set方法
//包括 $server->on('request', function($request, $response) {}也是可以有的
$server->set(
    [
        'enable_static_handler' => true,
        'document_root' => "/www/wwwroot/server",
    ]
);

//监听websocket连接打开事件
$server->on('open', 'onOpen');
function onOpen($server, $request) {
     echo "fd为:".$request->fd."已经上线\n";
}

// 监听ws消息事件
$server->on('message', function ( $server, $frame) {
    var_dump($frame);
    $msg='fd为'.$frame->fd.'说:'.$frame->data;//$frame->data为客户端传递过来的信息
    $server->push($frame->fd, $msg);
});

$server->on('close', function ($server, $fd) {
    echo "client {$fd} closed\n";
});

$server->start();
(2) 次にクライアント ファイルを書きます

<script>
    var url=&#39;ws://你的ip地址:8811&#39;;
    var ws =new WebSocket(url);
    ws.onopen=function (evt) {
        ws.send(&#39;客户端:建立链接成功&#39;);
        console.log(evt);
    }
    ws.onmessage=function(evt){
        console.log(evt);
        console.log(&#39;服务器回复:&#39;+evt.data);
    }
    ws.onclose=function(evt){
        console.log(evt);
    }
    ws.onerror=function(evt){
        console.log(evt);
    }

</script>

你可以根据这个来写一个基于web_socket的聊天室,十分有趣

tcp、udp、websocket、および http サービスについて学習すると、要約を作成できます:

swooleを使ってサーバーを作成する方法(その2)上記がこの記事の内容全体です。ヘルプ、その他の関連コンテンツについては、PHP 中国語 Web サイトに注目してください。

関連する推奨事項:

swooleを使ってサーバーを作成する方法(その2)swoole を使用してサーバーを作成する方法 (パート 1)

Swoole の学習: Swoole の概要

以上がswooleを使ってサーバーを作成する方法(その2)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。