인터넷 기술의 발달로 실시간 웹 애플리케이션이 점점 더 대중화되는 개발 방식이 되었습니다. 전이중 통신 프로토콜인 WebSocket은 실시간 웹 애플리케이션을 구현하는 중요한 방법이 되었습니다. PHP는 개발자의 사용을 용이하게 하기 위해 WebSocket API도 제공합니다. 이 기사에서는 PHP에서 WebSocket API를 사용하여 실시간 웹 애플리케이션을 구현하는 방법을 소개합니다.
1. WebSocket 개요
WebSocket은 단일 TCP 연결을 통해 전이중 통신을 제공하는 프로토콜로, 웹 애플리케이션이 클라이언트와 서버 간에 실시간 데이터를 통신할 수 있게 해줍니다. HTTP 프로토콜과 비교하여 WebSocket은 데이터 전송 시 대기 시간이 짧고 핸드셰이크가 적으므로 더 많은 실시간 웹 애플리케이션을 사용할 수 있습니다.
2. PHP에서 WebSocket API를 사용하여 실시간 웹 애플리케이션 구현
PHP WebSocket은 ReactPHP를 기반으로 하므로 먼저 ReactPHP를 설치해야 합니다.
composer require react/socket:^1.11.0 react/event-loop:^1.1.0
The 다음은 간단한 PHP WebSocket 서비스 코드입니다.
use ReactSocketConnectionInterface; use ReactSocketServer; require __DIR__ . '/vendor/autoload.php'; $loop = ReactEventLoopFactory::create(); $socket = new Server('localhost:8080', $loop); $clients = new SplObjectStorage(); $socket->on('connection', function (ConnectionInterface $conn) use ($clients) { $clients->attach($conn); $conn->on('data', function ($data) use ($clients, $conn) { foreach ($clients as $client) { if ($conn !== $client) { $client->write($data); } } }); $conn->on('close', function () use ($clients, $conn) { $clients->detach($conn); }); }); $loop->run();
이 코드는 로컬 시스템의 8080 포트를 수신하는 WebSocket 서비스를 생성합니다. 클라이언트가 연결되면 클라이언트 개체를 SplObjectStorage 개체에 저장합니다. 데이터 전송이 있는 경우 보낸 사람을 제외한 다른 클라이언트에게 데이터를 전송합니다. 클라이언트 연결이 끊어지면 SplObjectStorage에서 클라이언트 개체를 삭제합니다.
위 코드를 server.php
파일로 저장하고 php server.php
명령을 실행하여 WebSocket 서비스를 시작하세요. 이 시점에서 WebSocket 서비스는 이미 로컬 포트 8080에서 실행 중이며 클라이언트 연결을 수락할 수 있습니다. server.php
文件,运行命令php server.php
启动WebSocket服务。此时,WebSocket服务已经在本机的8080端口上运行,并且可以接受客户端连接。
下面是一个简单的PHP WebSocket客户端代码:
use ReactEventLoopFactory; use ReactSocketConnector; use ReactSocketConnectionInterface; require __DIR__ . '/vendor/autoload.php'; $loop = Factory::create(); $connector = new Connector($loop); $connector->connect('tcp://127.0.0.1:8080')->then(function (ConnectionInterface $conn) use ($loop) { $conn->on('data', function ($data) { echo $data; }); $loop->addReadStream(STDIN, function () use ($conn) { $line = fgets(STDIN); $conn->write($line); }); }, function (Exception $e) { echo 'Could not connect: ' . $e->getMessage() . PHP_EOL; }); $loop->run();
该代码创建了一个WebSocket客户端,连接到本机的8080端口。当有数据传输时,将数据输出到控制台上。当读取控制台输入时,将输入传输给WebSocket服务端。
保存上述代码为client.php
文件,运行命令php client.php
启动WebSocket客户端。此时,WebSocket客户端已经连接到本机的WebSocket服务器。
在控制台中输入数据,数据将会被发送给WebSocket服务端,服务端将数据回传给除发送者外的其他客户端。我们可以打开多个控制台运行php client.php
다음은 간단한 PHP WebSocket 클라이언트 코드입니다.
rrreee🎜이 코드는 WebSocket 클라이언트를 생성하고 로컬 시스템의 8080 포트에 연결합니다. 데이터 전송이 있으면 데이터가 콘솔로 출력됩니다. 콘솔 입력을 읽을 때 입력을 WebSocket 서버로 전송합니다. 🎜client.php
파일로 저장하고 php client.php
명령을 실행하여 WebSocket 클라이언트를 시작합니다. 이 시점에서 WebSocket 클라이언트는 로컬 WebSocket 서버에 연결되었습니다. 🎜php client.php
를 실행하여 실시간 통신 효과를 테스트할 수 있습니다. 🎜🎜3. 요약🎜🎜WebSocket API는 PHP가 실시간 웹 애플리케이션을 쉽게 구현할 수 있는 WebSocket을 구현하는 방법을 제공합니다. 이 기사에서는 PHP에서 WebSocket API를 사용하여 실시간 웹 애플리케이션을 구현하는 방법을 소개합니다. WebSocket의 개요, WebSocket 서비스 생성, WebSocket 클라이언트 생성 및 WebSocket 통신 테스트를 다룹니다. 🎜위 내용은 PHP에서 WebSocket API를 사용하여 실시간 웹 애플리케이션을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!