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连接,并完成了双向通信。