Heim >Backend-Entwicklung >PHP-Problem >So erstellen Sie eine WebSocket-Umgebung in PHP

So erstellen Sie eine WebSocket-Umgebung in PHP

藏色散人
藏色散人Original
2022-10-27 10:33:192503Durchsuche

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.

So erstellen Sie eine WebSocket-Umgebung in PHP

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!

Stellungnahme:
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