Die Rolle des Kommunikationsprotokolls

Da TCP streambasiert ist, fließen die vom Client gesendeten Anforderungsdaten wie Wasser in den Server. Wenn der Server feststellt, dass Daten eingegangen sind, sollte er überprüfen, ob die Daten vollständig sind, da möglicherweise nur ein Teil der Anforderung den Server erreicht hat oder möglicherweise mehrere Anforderungen zusammen beim Server eingegangen sind. Um zu bestimmen, ob die Anfrage vollständig angekommen ist oder um Anforderungen, die zusammengeflossen sind, zu trennen, muss ein Kommunikationsprotokoll festgelegt werden.

Warum ist es notwendig, Protokolle in Workerman festzulegen?

Traditionelle PHP-Entwicklung basiert in der Regel auf dem Web und verwendet grundsätzlich das HTTP-Protokoll. Die Verarbeitung des HTTP-Protokolls wird vollständig vom Webserver übernommen, sodass sich Entwickler nicht um die Protokollaspekte kümmern müssen. Wenn wir jedoch nicht-HTTP-basierte Protokolle entwickeln müssen, müssen die Entwickler sich mit den Protokollen auseinandersetzen.

Protokolle, die bereits von Workerman unterstützt werden

Workerman unterstützt derzeit das HTTP, WebSocket, Textprotokoll (siehe Anhang) und Frame-Protokoll (siehe Anhang), sowie das ws-Protokoll (siehe Anhang). Wenn die Kommunikation auf diesen Protokollen basieren soll, können sie direkt verwendet werden. Die Verwendung erfolgt, indem beim Initialisieren des Workers das Protokoll angegeben wird, zum Beispiel:

use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';

// websocket://0.0.0.0:2345 zeigt an, dass der WebSocket-Protokoll den Port 2345 überwacht
$websocket_worker = new Worker('websocket://0.0.0.0:2345');

// text-Protokoll
$text_worker = new Worker('text://0.0.0.0:2346');

// frame-Protokoll
$frame_worker = new Worker('frame://0.0.0.0:2347');

// tcp Worker, der direkt auf Socket-Übertragung basiert, ohne Anwendungsschichtprotokoll
$tcp_worker = new Worker('tcp://0.0.0.0:2348');

// udp Worker, ohne Anwendungsschichtprotokoll
$udp_worker = new Worker('udp://0.0.0.0:2349');

// unix domain Worker, ohne Anwendungsschichtprotokoll
$unix_worker = new Worker('unix:///tmp/wm.sock');

Verwendung eines benutzerdefinierten Kommunikationsprotokolls

Wenn die von Workerman bereitgestellten Kommunikationsprotokolle nicht den Entwicklungsanforderungen genügen, können Entwickler ihre eigenen Kommunikationsprotokolle erstellen. Die Methoden zur Anpassung werden im nächsten Abschnitt beschrieben.

Hinweis:

Workerman hat ein integriertes Textprotokoll, dessen Format aus Text + Zeilenumbruch besteht. Die Entwicklung und das Debuggen des Textprotokolls sind sehr einfach und können in den meisten Szenarien für benutzerdefinierte Protokolle verwendet werden, und es unterstützt Telnet-Debugging. Wenn Entwickler ihr eigenes Anwendungsprotokoll entwickeln wollen, können sie direkt das Textprotokoll verwenden, ohne ein separates Protokoll entwickeln zu müssen.

Für weitere Informationen zum Textprotokoll siehe „Anhang Textprotokoll“