Es gibt viele unsichere Teile aufgrund der Art, was wir tun, also nur für Tests und Hobbys.
Bereiten Sie den Server vor. In meinem Beispiel habe ich Sakuras VPS ausgeliehen.
Fügen Sie über das Bedienfeld Einstellungen für die Paketfilterung hinzu. Sie können es ausschalten, es wird jedoch nicht empfohlen, da es nicht gut für die Sicherheit ist.
In diesem Beispiel wollte ich die Portnummer "50000" verwenden, also habe ich sie vorübergehend deaktiviert.
Nach Bedarf einstellen. Dieses Beispiel ist das VPS-Einstellungsbeispiel von Sakura. Ändern Sie auch die Portnummer nach Ihren Wünschen.
$ firewall-cmd --zone=public --add-port=50000/tcp --permanent
Vergessen Sie nicht, die Einstellungen wiederzugeben!
$ firewall-cmd --reload
In diesem Beispiel ist php7.3 installiert.
remi
$ yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
Es gibt viele zusätzliche Dinge, aber bitte ändern Sie sie nach Bedarf.
$ yum -y install --enablerepo=remi,remi-php73 php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql
In diesem Beispiel wird die externe Bibliothek PHP-WebSocket verwendet.
Legen Sie Binärdateien hier in Ihrem Apache-Verzeichnis ab.
$ cd /var/www/html
$ wget https://github.com/nicokaiser/php-websocket/archive/php-websocket.zip
$ unzip php-websocket.zip
$ sudo rm -rf php-websocket.zip
Bearbeiten Sie nach dem Herunterladen server.php
in php-websocket / server
.
Wenn vim
nicht installiert ist, verwenden Sie vi
oder installieren Sie es mit yum -y install vim
.
$ cd php-websocket/server
$ vim server.php
Ändern und speichern Sie "
<?php
error_reporting(0);
require(__DIR__ . '/lib/SplClassLoader.php');
$classLoader = new SplClassLoader('WebSocket', __DIR__ . '/lib');
$classLoader->register();
$server = new \WebSocket\Server('<Globale IPv4-Adresse>', 50000);
$server->registerApplication('echo', \WebSocket\Application\EchoApplication::getInstance());
$server->registerApplication('time', \WebSocket\Application\TimeApplication::getInstance());
$server->run();
Schreiben Sie dann die Handshake-Funktion in "php-websocket / lib / WebSocket / Connection.php" neu. Schreiben Sie die Handshake-Funktion in der Zeile 28 wie folgt um.
private function handshake($data)
{
socket_write($this->socket, $data, strlen($data));
$this->application->onConnect($this);
return true;
}
Beginnen Sie mit dem folgenden Befehl.
$ php server.php
In diesem Fall ist der Serverstart abgeschlossen. Gehen Sie weiter zum Client.
[root@~]# php server.php
2020-09-14 14:02:13 [info] Server created
Clientseitiger Code, der Daten sendet.
--Ersetzen Sie "
50000
ist ein Hafenimport socket
if __name__ == '__main__':
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
sock.connect(('<Globale IPv4-Adresse>', 50000))
data = 'Hello From Python Client!'
sock.send(data.encode())
print(sock.recv(1024).decode())
Wenn die übertragenen Daten wiedergegeben werden, ist dies erfolgreich. Es ist ein kleiner Schubser, aber ich konnte es vorerst tun.
[root@myserver]# php server.php
2020-09-14 15:00:53 [info] Server created
2020-09-14 15:00:55 [info] [client XXX] Connected
Es war unerwartet lästig. .. Danke für Ihren Besuch.