인터넷 기술의 발전으로 게임 분야에서도 실시간 게임 데이터 동기화가 필요합니다. WebSocket 프로토콜은 클라이언트와 서버 간의 양방향 통신에 사용되는 기술로, 실시간 데이터 동기화 가능성을 제공합니다.
이 문서에서는 PHP와 WebSocket을 사용하여 실시간 게임 데이터 동기화를 달성하는 방법을 소개합니다. 구체적인 구현 단계는 다음과 같습니다.
1단계: WebSocket 이해
WebSocket은 클라이언트와 클라이언트 간의 지속적인 연결을 활용하는 HTML5 프로토콜입니다. 서버, 실시간 양방향 통신을 달성합니다. WebSocket 연결이 설정된 후 서버와 클라이언트는 실시간 동기화를 달성하기 위해 실시간 데이터를 서로 보낼 수 있습니다.
2단계: WebSocket 서버 작성
PHP에서는 Ratchet 라이브러리를 사용하여 WebSocket 서버를 구현할 수 있습니다. Ratchet은 ReactPHP를 이벤트 라이브러리로 사용하여 연결과 데이터 수신 및 전송을 처리하는 PHP WebSocket 구현 라이브러리입니다.
먼저 종속성을 관리하려면 Composer를 설치해야 합니다. 프로젝트 루트 디렉터리에 작곡가.json 파일을 생성하고 다음 코드를 작성합니다:
{
"require": { "cboden/ratchet": "^0.4.3", "react/event-loop": "^1.0.0", "react/socket": "^1.0.0", "react/http": "^1.0.0" }
}
그런 다음 명령줄에서 다음 명령을 실행하여 Ratchet 및 해당 종속 항목을 설치합니다.
composer install
Next , server.php라는 파일을 생성합니다. 이 파일은 WebSocket 서버의 진입점이 됩니다. 다음 코드를 사용하여 이 파일에 WebSocket 서버 인스턴스를 생성합니다:
e63c321cd1fd2ee0f21d87a3ba2bd1f4run();
We create WebSocket의 프로세서로 Game이라는 클래스를 생성합니다. 이 클래스는 Ratchet의 MessageComponentInterface 인터페이스를 구현합니다. onOpen은 새 WebSocket 클라이언트가 연결될 때를 나타내고, onMessage는 클라이언트가 보낸 메시지가 수신될 때를 나타내고, onClose는 WebSocket 클라이언트의 연결이 끊어질 때를 나타냅니다. 오류가 발생합니다. Game 클래스에서는 SplObjectStorage 개체를 사용하여 연결된 모든 클라이언트를 저장합니다. onOpen 메서드에서는 연결 개체를 SplObjectStorage에 연결합니다. onMessage 메소드에서는 SplObjectStorage의 모든 클라이언트를 반복하고 수신된 메시지를 보냅니다. onClose 메서드에서는 SplObjectStorage에서 연결 개체를 제거합니다. 마지막으로 IoServer 클래스를 사용하여 WebSocket 서버를 생성하고 실행합니다. HTTP 및 WebSocket 요청을 모두 처리할 수 있도록 HttpServer와 WsServer를 함께 래핑합니다. WebSocket 서버의 포트 번호로 8080을 사용했으며 필요한 경우 변경할 수 있습니다. 3단계: WebSocket 클라이언트 작성 클라이언트에서는 JavaScript를 사용하여 WebSocket 연결을 구현합니다. JavaScript에서는 WebSocket 객체를 생성하고 서버에 연결해야 합니다. WebSocket 객체의 상태가 변경되면 처리를 위해 WebSocket 이벤트 핸들러가 호출됩니다. 여기에서는 jQuery를 사용하여 DOM 요소를 쉽게 조작하고 이벤트를 처리해 보겠습니다. 먼저 서버에 메시지를 보내기 위해 HTML로 간단한 텍스트 입력 상자와 버튼을 만듭니다. 100db36a723c770d327fc0aef2ce13b193f0f5c25f18dab9d176bd4f6de5d30e
<title>Real-time Game Data Synchronization</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="client.js"></script>
9c3bca370b5104690d9ef395f2c5f8d1
6c04bd5ca3fcae76e30b72ad730ca86d<input type="text" id="message"> <button id="send">Send</button> <div id="messages"></div>< ;/ body>
73a6ac4ed44ffec12cee46588e518a5e
$(document).ready(function() {
var conn = new WebSocket('ws://localhost:8080'); conn.onopen = function(evt) { console.log('Connected to server'); }; conn.onmessage = function(evt) { console.log('Received message: ' + evt.data); $('#messages').append($('<p>').text(evt.data)); }; conn.onclose = function(evt) { console.log('Connection closed'); }; $('#send').click(function() { var message = $('#message').val(); conn.send(message); $('#message').val(''); });
})
위 내용은 PHP와 Websocket을 사용하여 실시간 게임 데이터 동기화를 달성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!