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

So erstellen Sie eine WebSocket-Umgebung in PHP

藏色散人
Freigeben: 2023-03-17 10:00:02
Original
2500 Leute haben es durchsucht

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 Login kopieren

Nach dem Öffnen können wir zur Sache kommen. Zuerst verstehen wir ein paar Funktionen:

extension=sockets
Nach dem Login kopieren

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);//断开连接
Nach dem Login kopieren

$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));
        }
Nach dem Login kopieren

$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;
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage