Workerman 네트워크 프로그래밍 실습: 안정적인 인스턴트 데이터 동기화 시스템 구축
인터넷과 모바일 기기의 대중화로 즉각적인 커뮤니케이션이 점점 더 중요해지고 있습니다. 다양한 장치와 플랫폼 간의 인스턴트 메시징과 데이터 동기화를 실현하는 것은 개발자들 사이에서 공통적인 요구 사항이 되었습니다. 이 기사에서는 Workerman 네트워크 프로그래밍 프레임워크를 사용하여 안정적인 즉시 데이터 동기화 시스템을 구축하는 방법을 살펴보겠습니다.
composer require workerman/workerman
설치가 완료된 후 다음 코드를 통해 Workerman을 초기화할 수 있습니다.
<?php require_once __DIR__ . '/vendor/autoload.php'; use WorkermanWorker; $worker = new Worker(); $worker->listen('tcp://0.0.0.0:2345'); $worker->onMessage = function ($connection, $data) { // 这里处理收到的消息 }; Worker::runAll();
위 코드는 Worker 개체를 생성하고 포트 2345에서 TCP 연결을 수신합니다. 클라이언트의 메시지는 onMessage 콜백 함수를 통해 처리됩니다. 콜백 함수에서 자체 비즈니스 로직을 구현할 수 있습니다.
서버 코드:
<?php require_once __DIR__ . '/vendor/autoload.php'; use WorkermanWorker; $worker = new Worker(); $worker->listen('websocket://0.0.0.0:8000'); $worker->onMessage = function ($connection, $data) { // 处理收到的消息 $data = json_decode($data, true); // 存储消息到数据库 saveMessageToDatabase($data); // 缓存消息 cacheMessage($data); // 向所有客户端广播消息 broadcastMessage($data); }; $worker->onClose = function ($connection) { // 处理客户端断开连接 removeClient($connection); }; function saveMessageToDatabase($data) { // 将消息存储到数据库中 } function cacheMessage($data) { // 缓存消息 } function broadcastMessage($data) { // 向所有客户端广播消息 } function removeClient($connection) { // 处理客户端断开连接 } Worker::runAll();
클라이언트 코드:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Chat</title> </head> <body> <input type="text" id="message" placeholder="输入消息"> <button onclick="sendMessage()">发送</button> <script src="http://localhost:8000/socket.io/socket.io.js"></script> <script> var socket = io('http://localhost:8000'); socket.on('connect', function() { console.log('Connected to server'); }); socket.on('message', function(data) { console.log('Received message:', data); }); function sendMessage() { var message = document.getElementById('message').value; socket.emit('message', message); } </script> </body> </html>
위 코드는 Websocket 프로토콜을 통해 통신합니다. 서버는 Workerman에서 제공하는 WebSocket 클래스를 사용하여 Websocket 서버를 생성하고, 클라이언트는 소켓.io 라이브러리를 사용하여 서버와 통신합니다.
위 내용은 워커맨 네트워크 프로그래밍 실습: 안정적인 실시간 데이터 동기화 시스템 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!