composer require workerman/workerman
server.php
的腳本文件,並寫入以下內容:<?php require_once __DIR__ . '/vendor/autoload.php'; use Workerman\Worker; // 創建一個Worker監聽2345端口,使用websocket協定 $worker = new Worker('websocket://0.0.0.0:2345'); // 啟動4個進程提供服務 $worker-> count = 4; // 接收到消息後的回調$worker->onMessage = function($connection, $data) { // 處理接收到的客戶端數據// 回复客戶端$connection->send('Hello, Unity3D!'); }; // 啟動Worker Worker::runAll(); ?>
以上代碼創建了一個監聽WebSocket協議的服務器,能夠同時處理多個客戶端的連接請求。
server.php
所在目錄,執行以下命令:php server.php
若配置正確,將看到如下輸出,表示服務器已啟動:
------------------------- Workerman starting... ------------------------- Workerman started...
SocketClient.cs
的腳本,腳本內容如下:using UnityEngine; using SocketIO; public class SocketClient : MonoBehaviour { private SocketIOComponent socket; private void Start() { socket = GetComponent<SocketIOComponent>(); // 監聽來自服務器的消息socket.On("message", OnMessage); // 建立連接socket.Connect(); // 發送消息至服務器socket.Emit("message", "Hello, Server!"); } private void OnMessage(SocketIOEvent e) { // 輸出服務器返回的消息Debug.Log(e.data.ToString()); } }
腳本實現了客戶端與服務器的消息收發流程,在Unity啟動時連接服務器並輸出返回內容。
Hello, Unity3D!
這表明Unity客戶端與PHP服務器之間已成功建立WebSocket連接,並完成了雙向通信。