So erstellen Sie mit Swoole einen Server (Teil 2)

不言
Freigeben: 2023-04-03 06:08:02
Original
2035 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich die Verwendung von swoole zum Erstellen eines Servers vor (Teil 2), der einen bestimmten Referenzwert hat. Jetzt können Freunde in Not darauf verweisen.

1 HttpServer Server

HttpServer basiert auf swoole_server, sodass die Methoden HttpServer unter swoole_server verwendet werden können
httpsevrer, die nur vom Client

aufgerufen werden können

So erstellen Sie mit Swoole einen Server (Teil 2)

1. Testen

<?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();
Nach dem Login kopieren

PHP ausführen, Browser öffnen
So erstellen Sie mit Swoole einen Server (Teil 2)

Server
So erstellen Sie mit Swoole einen Server (Teil 2)

Hier haben wir ein seltsames Phänomen gefunden
1 Der Inhalt von echo(var_dump,print_rd) wird auf dem Server angezeigt
2 durch end (content)
end kann nur einmal aufgerufen werden. Wenn Sie Daten mehrmals an den Client senden müssen, verwenden Sie bitte die Schreibmethode

Erweiterung : Hey, das ist dem XXX, das wir normalerweise besuchen, sehr ähnlich. com:80 Was wäre, wenn wir auf die Datei unten zugreifen möchten?
Denken Sie an einen Funktionssatz, den wir zuvor sowohl in TCP als auch in UDP verwendet haben? Ich verstehe diese Funktion als Konfiguration, also werden wir sie konfigurieren

$http->set([
      'enable_static_handler' => true,
      'document_root' => "/www/wwwroot/server",//设置根目录这里根据你自己的路径来写
    
]);
Nach dem Login kopieren

Ist es nicht sehr ähnlich zur Konfiguration einer virtuellen Adresse? ? Wir versuchen, auf test.html

So erstellen Sie mit Swoole einen Server (Teil 2)

im Serververzeichnis zuzugreifen!!
Im Allgemeinen wird http_server mit document_root festgelegt Der Prozess lautet wie folgt:
1. Zuerst greifen Sie auf die Datei unter dem Pfad relativ zu document_root gemäß der URL zu, was dem Prinzip der Konfiguration eines Domänennamens für den Zugriff auf Dateien ähnelt
2. Wenn diese Datei Nein ist, führt unser http_server $http->on('request'function($request, $response)) aus und gibt entsprechende Antworten


2. Erstellen Sie einen WebSocket-Server

1. Funktionen:
(1) Das HTTP-Protokoll weist einen Fehler auf: Die Kommunikation kann nur vom Client initiiert werden, und der Server kann keine Informationen aktiv an ihn weiterleiten der Kunde.
Das größte Merkmal von WebSocket besteht darin, dass der Server aktiv Informationen an den Client senden kann und der Client auch aktiv Informationen an den Server senden kann. Es handelt sich um einen echten wechselseitigen gleichberechtigten Dialog und eine Art Server-Push-Technologie.
(2)Web_Socket erbt http_server
So erstellen Sie mit Swoole einen Server (Teil 2)

Aufgrund der Funktion von web_serverVollduplex eignet es sich sehr gut für Chatrooms

2 . Apropos, machen wir einen einfachen Test!
(1) Schreiben wir zuerst eine web_server.php-Datei

$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();
Nach dem Login kopieren

(2) Schreiben wir dann eine Client-Datei

<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>
Nach dem Login kopieren

So erstellen Sie mit Swoole einen Server (Teil 2)

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

Danach Wenn wir mehr über TCP-, UDP-, WebSocket- und HTTP-Dienste erfahren, können wir eine Zusammenfassung erstellen:

So erstellen Sie mit Swoole einen Server (Teil 2)

Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er nützlich sein wird Jeder lernt. Bitte beachten Sie die chinesische PHP-Website für weitere verwandte Inhalte!

Verwandte Empfehlungen:

So verwenden Sie Swoole zum Erstellen eines Servers (Teil 1)

Einführung in Swoole zum Erlernen von Swooled

Das obige ist der detaillierte Inhalt vonSo erstellen Sie mit Swoole einen Server (Teil 2). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage