php 웹소켓 서버 예제

다음은 PHP 편집에서 첫 번째 Websockets 응용 프로그램을 만드는 간단한 단계입니다: 이 편집은 원래 대답 후 몇 년이며 여전히 작업 솔루션을 가지고 있지만 공유할 준비가 되지 않았습니다. 다행히, GitHub의 다른 사람은 광산에 거의 동일한 코드를 가지고 (하지만 훨씬 청소기), 그래서 나는 작업 PHP WebSocket 솔루션에 대한 다음 코드를 사용하는 것이 좋습니다 : https://github.com/ghedipunk/PHP-Websockets/blob/master/websockets.php Websockets되었습니다 오랫동안 잘 알려져 있지만 실제 PHP 응용 프로그램에서는 아직 많이 볼 수 없습니다. 실시간 데이터 피드가 중요하고, 사용자 경험을 개선하며, 프런트 엔드와 백엔드 측 모두에서 더 나은 성능을 제공합니다. 웹 소켓은 대기 시간을 줄이고 HTTP 왕복을 방지하는 데 도움이 됩니다. WSPHP는 C++로 작성된 작고 빠른 서버로 개발자에게 Websockets를 통해 클라이언트와 서버 간에 양방향 응용 프로그램을 만들 수 있는 도구를 제공합니다. 자바 스크립트에서 우리는 쿼리 문자열 my_name_is=John을 서버에 보냅니다. 서버는 특수 태그로 응답을 래핑합니다. 수신되면 브라우저는 « 안녕하세요, 존 »과 함께 경고 창을 표시합니다. 모든 입력 데이터는 평소와 같이 $_GET(또는 $_REQUEST) 변수를 통해 PHP에서 액세스할 수 있습니다. PHP 스크립트는 서버에서 웹소켓 프레임을 받는 즉시 실행됩니다. PHP 스크립트가 실행된 후 간단한 XML을 stdout으로 출력합니다. 평소와 같이 PHP 스크립트는 실행 후 죽습니다.

평소와 같이 세션을 사용하여 데이터를 저장할 수 있습니다. Websocket 연결은 열려 있으며, 데이터는 원격 클라이언트에서 수신하거나 필요할 때 원격 클라이언트로 전송될 수 있습니다. 작업에서 그것을 볼 수 있는 좋은 도구를 사용 하 여이 크롬 확장 간단한 Websocket 클라이언트. ws://localhost:8080/chat 연결하고 몇 개의 메시지를 보내려고 하면 첫 번째 메시지는 사용자 이름으로 할당되고 그 이후의 모든 메시지는 사용자에게 바로 전송됩니다(및 WebSocket에 연결된 다른 사용자) 서버는 표준 HTTP 회신을 보냅니다. 이제 연결이 설정됩니다. 1. 클라이언트는 WebSocket 서버 2에 연결하려고합니다. 서버는 클라이언트 3을 인식합니다. 클라이언트가 서버에 등록되지 않은 경우 클라이언트를 추가합니다(헤더 전송을 기반으로 하는 핸드셰이킹 프로세스라고 함) 4. 데이터 웹소켓 라이프사이클_30624_l.png 5를 보내고 받습니다. 연결 닫기 예, GC를 수동으로 실행하여 엔터티 관리자를 플러시하고 엔터티 관리자를 지우고 SQL 로거를 null로 설정하여 아무 소용이 없습니다.

보시다시피 WebSockets의 이러한 구현은 이상적이지 않습니다. 하지만… 프로젝트가 PHP를 사용하기 위해 잠겨 있고 WebSockets를 사용하려는 경우 가장 쉽고 다양한 방법입니다. . 이렇게 하면 포트 8000에서 수신 대기하는 웹소켓 서버가 생성됩니다. 나는 최근에 당신과 같은 보트에 있었고, 여기에 내가 한 일입니다 : 개발자는 평소와 같이 PHP를 계속 사용할 수 있습니다. 특별한 지식이 필요하지 않습니다. WebSocket은 단일 TCP 연결을 통해 통신 채널을 제공하는 웹 기술입니다. WebSocket 프로토콜은 독립적인 TCP 기반 프로토콜입니다. HTTP와의 유일한 관계는 HTTP 서버에서 해당 핸드셰이크를 업그레이드 요청으로 해석한다는 것입니다. 이제 서비스 chatSocket 시작을 실행할 수 있으며 SSH / 터미널 세션을 닫을 때도 WebSocket이 서비스로 실행됩니다.

4) #3 초안의 지침에 따라 적절한 핸드셰이크 절차를 코딩했습니다. 이것은 나쁘지 않았습니다. 클라이언트는 base64 인코딩된 Sec-WebSocket-Key를 보냅니다. 응답을 형성하기 위해 매직 스트링 258EAFA5-E914-47DA-95CA-C5AB0DC85B11이 이(디코딩되지 않은) 키에 추가됩니다. 그런 다음 결과 문자열을 SHA-1로 해시한 다음 base64를 인코딩합니다. 마지막으로 결과 회리는 헤더 Sec-WebSocket-Accept에서 발생 합니다.

Les commentaires sont fermés.