php で WebSocket 環境を構築する方法: 1. php.ini ファイルでソケット拡張子を見つけ、その前のセミコロンを削除します; 2. http を WebSocket にアップグレードします; 3. 環境変数を構成してインストールしますPHP Pathにパスを追加; 4.cmdに「php Path」と入力します。
このチュートリアルの動作環境: Windows 7 システム、PHP バージョン 8.1、Dell G3 コンピューター。
php で WebSocket 環境をセットアップするにはどうすればよいですか?
PHP は WebSocket サーバーを作成します
このサーバーを作成するには、最初にソケット拡張機能を有効にする必要があります。有効になっていない場合は、エラーが報告されます何があっても問題ありません。
php.ini ファイルでソケット拡張子を見つけて、その前のセミコロンを削除して開くだけです。
開く前に:
;extension=sockets
extension=sockets
opening Finished を開いた後、本題に進みます。まず、いくつかの関数を理解します:
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);//断开连接
多くの手順は、PHP でソケットを作成するのと似ています。
主な違いは、socket_write の使用とデータを解決する必要があることです。フレームをシールするには、http を websocket にアップグレードする必要がありますhttp を websocket にアップグレードします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)); }$ソケットは作成した接続、$buffer はクライアントが初めて接続するときに送信されるデータです注: Sec-WebSocket-Key: (.*)//角括弧とコロンの間にはスペースが必要ですDeframing
$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;$buffer は最初のクライアントです最初の接続中に送信されるデータFrame seal
$len=strlen($message); if($len<=125){ return "\x81".chr($len).$message; }else if($len<=65535){ return "\x81".chr(126).pack("n",$len).$message; }else{ return "\x81".chr(127).pack("xxxxN",$len).$message; }$message は送信する必要があるデータですフロントエンド接続の前にサーバーを実行することを忘れないでください。実行方法:cmd に入力します
php 你的服务端PHP文件路径実行前に環境変数を構成します。PHP インストール パスを次の場所に追加します。パス推奨学習: 「
PHP ビデオ チュートリアル」
以上がPHPでWebSocket環境を構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。