composer require workerman/workermanserver.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連接,並完成了雙向通信。