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