text协议

Workerman definiert ein Protokoll, das als text bezeichnet wird. Das Protokollformat ist Datenpaket+Zeilenumbruch, wobei ein Zeilenumbruch am Ende jedes Datenpakets das Ende des Pakets anzeigt.

Beispielsweise entsprechen die folgenden Strings buffer1 und buffer2 dem text-Protokoll:

// Text mit einem Zeilenumbruch
$buffer1 = 'abcdefghijklmn
';
// In PHP repräsentiert "\n" in doppelten Anführungszeichen ein Zeilenumbruch, z.B. "\n"
$buffer2 = '{"type":"say", "content":"hello"}'."\n";

// Eine Socket-Verbindung zum Server aufbauen
$client = stream_socket_client('tcp://127.0.0.1:5678');
// buffer1-Daten im text-Protokoll senden
fwrite($client, $buffer1);
// buffer2-Daten im text-Protokoll senden
fwrite($client, $buffer2);

Das text-Protokoll ist sehr einfach zu verwenden. Wenn Entwickler ein eigenes Protokoll benötigen, beispielsweise für die Datenübertragung mit einer mobilen App oder für die Kommunikation mit Hardware, können sie in Betracht ziehen, das text-Protokoll zu verwenden, da die Entwicklung und das Debugging sehr praktisch sind.

text-Protokoll-Debugging

Das text-Protokoll kann mit einem Telnet-Client getestet werden, wie im folgenden Beispiel:

Erstellen Sie die Datei test.php

require_once __DIR__ . '/Workerman/Autoloader.php';
use Workerman\Worker;

$text_worker = new Worker("text://0.0.0.0:5678");

$text_worker->onMessage = function($connection, $data)
{
    var_dump($data);
    $connection->send("hello world");
};

Worker::runAll();

Führen Sie php test.php start aus, und es wird Folgendes angezeigt:

php test.php start
Workerman[test.php] startet im DEBUG-Modus
----------------------- WORKERMAN -----------------------------
Workerman version:3.2.7          PHP version:5.4.37
------------------------ WORKERS -------------------------------
Benutzer       Worker       Zuhören                      Prozesse Status
root           none         myTextProtocol://0.0.0.0:5678   1         [OK]
----------------------------------------------------------------
Drücken Sie Ctrl-C, um zu beenden. Start erfolgreich.

Öffnen Sie ein neues Terminal und testen Sie mit Telnet (es wird empfohlen, das Telnet in einem Linux-System zu verwenden).

Angenommen, es handelt sich um einen lokalen Test,
führen Sie im Terminal telnet 127.0.0.1 5678 aus.
Geben Sie dann hi ein und drücken Sie die Eingabetaste.
Es wird die Daten hello world\n empfangen.

telnet 127.0.0.1 5678
Trying 127.0.0.1...
Verbunden mit 127.0.0.1.
Fluchtzeichen ist '^]'.
hi
hello world