PHP에서 websocket 환경을 구축하는 방법: 1. php.ini 파일에서 소켓 확장을 찾아 앞에 있는 세미콜론을 삭제합니다. 2. http를 websocket으로 업그레이드합니다. 3. 환경 변수를 구성하고 PHP 설치 경로를 추가합니다. 4. cmd에 "php Path"를 입력하세요.
이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 8.1, Dell G3 컴퓨터.
PHP에서 웹소켓 환경을 설정하는 방법은 무엇입니까?
PHP는 웹소켓 서버를 생성합니다
이 서버를 생성하려면 먼저 소켓 확장을 활성화해야 합니다. 활성화되어 있지 않으면 어쨌든 오류가 보고됩니다.
php.ini에서 소켓 확장을 찾으세요. 파일을 열고 앞에 있는 세미콜론을 삭제하세요.
열기 전:
;extension=sockets
열기 후:
extension=sockets
열고 나면 먼저 몇 가지 기능을 이해할 수 있습니다. 많은 단계가 PHP에서 소켓을 생성하는 것과 유사합니다.
가장 큰 차이점은 소켓_쓰기 사용법과 데이터를 디코딩하고 프레임화해야 한다는 것입니다. http를 websocket
http에서 websocket
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);//断开连接
$socket으로 업그레이드해야 합니다. $buffer는 클라이언트가 처음 연결될 때 전송됩니다. Data
참고: Sec-WebSocket-Key: (.*)//대괄호와 콜론 사이에 공백이 있어야 합니다
Deframing
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가 데이터입니다. 클라이언트가 처음 연결될 때 전송됩니다
프레임 봉인
$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;
$message는 우리가 전송해야 하는 데이터입니다.
프런트 엔드에 연결하기 전에 서버를 실행해야 한다는 것을 기억하세요. 실행 방법:
입력
$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; }
cmd 실행 전 환경 변수 구성:
권장 학습: "
PHP Video Tutorial위 내용은 PHP로 웹소켓 환경을 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!