인터넷 기술의 발전으로 실시간 소통의 실현에 중점을 두는 웹사이트와 애플리케이션이 점점 많아지기 시작했습니다. WebSocket 프로토콜은 실시간 통신을 달성하는 효과적인 방법으로 간주됩니다. 이 기사에서는 PHP와 WebSocket을 사용하여 실시간 통신 기능을 구현하는 방법을 소개합니다.
WebSocket은 브라우저와 서버 간에 지속적인 연결을 설정하여 양방향 실시간 통신을 달성할 수 있는 TCP 기반 프로토콜입니다. HTTP 프로토콜과 달리 WebSocket 프로토콜은 서버의 응답을 받기 위해 브라우저가 요청을 보낼 필요가 없지만 양방향으로 직접 통신할 수 있습니다.
WebSocket은 긴 연결 방식을 사용하기 때문에 데이터 전송 효율을 크게 향상시키고 서버의 부하를 줄일 수 있습니다. 실시간 통신 시나리오에서 WebSocket은 필수적인 기술이 되었습니다.
PHP에는 서버 측 언어로서 WebSocket을 지원하는 일부 프레임워크도 있습니다. 가장 유명한 것 중에는 Rachet 프레임워크, Swoole 프레임워크 등이 있습니다.
이 기사에서는 Rachet 프레임워크를 사용하여 실시간 통신 기능을 구현합니다. Rachet 프레임워크는 PHP용 오픈 소스 프레임워크로 WebSocket의 서버측 구현을 제공하며 Apache, Nginx 등과 같은 다양한 웹 서버를 지원할 수 있습니다.
Composer를 사용하여 Rachet 프레임워크 설치:
composer require cboden/ratchet
다음은 Rachet 프레임워크를 사용하여 실시간 통신을 구현하는 간단한 PHP 코드입니다. :
<?php use RatchetMessageComponentInterface; use RatchetConnectionInterface; use RatchetServerIoServer; use RatchetHttpHttpServer; use RatchetWebSocketWsServer; require 'vendor/autoload.php'; class MyChat implements MessageComponentInterface { protected $clients; public function __construct() { $this->clients = new SplObjectStorage; } public function onOpen(ConnectionInterface $conn) { $this->clients->attach($conn); echo "New connection! ({$conn->resourceId}) "; } public function onMessage(ConnectionInterface $from, $msg) { foreach ($this->clients as $client) { if ($from !== $client) { $client->send($msg); } } } public function onClose(ConnectionInterface $conn) { $this->clients->detach($conn); echo "Connection {$conn->resourceId} has disconnected "; } public function onError(ConnectionInterface $conn, Exception $e) { echo "An error has occurred: {$e->getMessage()} "; $conn->close(); } } $server = IoServer::factory( new HttpServer( new WsServer( new MyChat() ) ), 8080 ); $server->run();
코드에는 Ratchet 프레임워크에서 MessageComponentInterface 인터페이스를 구현하는 MyChat이라는 클래스가 정의되어 있습니다. 여기에는 다음 4가지 메서드가 포함되어 있습니다.
onOpen()
은 새 연결이 설정될 때 호출됩니다. onOpen()
当有新的连接建立时被调用。onMessage()
当代码接收到消息时被调用。onClose()
当连接被关闭时被调用。onError()
当出现错误时被调用。其中,onOpen()
方法记录了新连接建立的信息,onMessage()
方法将接收到的消息广播给所有连接的客户端,而onClose()
方法记录连接关闭的信息。
最后,代码通过IoServer::factory()
onMessage()
코드가 메시지를 수신하면 호출됩니다.
onClose()
연결이 닫힐 때 호출됩니다. onError()
오류가 발생하면 호출됩니다. onOpen()
메소드는 새로운 연결에 의해 설정된 정보를 기록하고, onMessage()
메소드는 수신된 메시지를 브로드캐스트합니다. 모든 연결에 연결되고 onClose()
메서드는 연결 종료 정보를 기록합니다. 마지막으로 코드는 IoServer::factory()
를 사용하여 서버를 생성하고 모니터링을 활성화합니다. 3. 테스트 명령줄에서 서버를 시작하세요. php chat-server.php
위 내용은 PHP와 WebSocket을 이용한 실시간 통신의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!