Heim >Backend-Entwicklung >PHP-Problem >So erstellen Sie eine WebSocket-Umgebung in PHP
So erstellen Sie eine Websocket-Umgebung in PHP: 1. Suchen Sie die Sockets-Erweiterung in der Datei php.ini und löschen Sie das Semikolon davor. 2. Aktualisieren Sie http auf Websocket. 3. Konfigurieren Sie Umgebungsvariablen und fügen Sie den PHP-Installationspfad hinzu zu Pfad 4. Geben Sie „php Path“ in cmd ein.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP-Version 8.1, Dell G3-Computer.
Wie richte ich eine WebSocket-Umgebung in PHP ein?
PHP erstellt einen Websocket-Server
Um diesen Server zu erstellen, müssen Sie zuerst die Sockets-Erweiterung aktivieren. Wenn sie nicht aktiviert ist, wird trotzdem ein Fehler gemeldet. Suchen Sie einfach die Sockets-Erweiterung in der php.ini Datei und entfernen Sie das Semikolon davor, um sie zu öffnen.
Vor dem Öffnen:
;extension=sockets
Nach dem Öffnen können wir zur Sache kommen. Zuerst verstehen wir ein paar Funktionen:
extension=sockets
Viele Schritte ähneln dem Erstellen eines Sockets in PHP.
Der Hauptunterschied besteht darin, dass die Verwendung und die Daten von socket_write dekodiert und gerahmt werden müssen erstellt, $buffer wird gesendet, wenn der Client zum ersten Mal eine Verbindung herstellt. Daten
Hinweis: Sec-WebSocket-Key: (.*)//Zwischen Klammern und Doppelpunkten müssen Leerzeichen stehen
Deframing
socket_create(AF_INET, SOCK_STREAM, SOL_TCP);//用于创建套接字 socket_bind( $this->master,$ip,$port);//用于绑定ip和端口 socket_listen( $this->master,1000);//用于调用connect连接的套接字和监听相关端口 socket_accept($this->master);//负责握手连接 socket_recv($socket, $buffer, 1024, 0);//从已连接的socket(客户端)接收数据 socket_write($socket,$upgrade,strlen($upgrade));//给单独客户端发送数据 send($message)//发送数据 socket_close($socket);//断开连接
$buffer sind die Daten Wird gesendet, wenn der Client zum ersten Mal eine Verbindung herstellt.
Rahmenversiegelung
if(preg_match("/Sec-WebSocket-Key: (.*)\r\n/",$buffer,$match)){ $responseKey=base64_encode(sha1($match[1] . '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',true)); $upgrade="HTTP/1.1 101 Switching Protocol\r\n". "Upgrade: websocket\r\n". "Connection: Upgrade\r\n". "Sec-WebSocket-Accept:".$responseKey."\r\n\r\n"; socket_write($socket,$upgrade,strlen($upgrade)); }
$message sind die Daten, die wir senden müssen.
Denken Sie daran, den Server auszuführen, bevor Sie eine Verbindung zum Frontend herstellen:
Geben Sie
$len=$masks=$data=$decoded=null; $len=ord($buffer[1]) & 127; if($len === 126){ $masks=substr($buffer,4,4); $data=substr($buffer, 8); }else if($len === 127){ $masks=substr($buffer,10,4); $data=substr($buffer, 14); }else{ $masks=substr($buffer,2,4); $data=substr($buffer, 6); } for($index = 0;$index<strlen($data);$index++){ $decoded.=$data[$index] ^ $masks[$index % 4]; } return $decoded;
ein cmd Konfigurieren Sie Umgebungsvariablen vor der Ausführung: Fügen Sie Ihren PHP-Installationspfad zum Pfad hinzu. Empfohlenes Lernen in
: „
PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonSo erstellen Sie eine WebSocket-Umgebung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!