利用Swoole,可以使用PHP来开发Websocket服务器,实现多人在线游戏。本文通过一个最简单的摇骰子游戏来介绍Server端(由PHP+Swoole实现)和Client端(由H5+Websocket实现)。
基本原理
由Swoole创建Websocket服务,用户的所有操作(登录、准备、摇骰子等)通过Websocket发送到服务器。游戏状态的改变(用户所有操作、游戏开始、用户摇骰子结果、游戏结束、游戏结果等)也通过Websocket发送到客户端。
流程
游戏初始化
用户连接到服务器即实现了登录。服务器维护在线用户列表。用户登录或退出都push给所有客户端。
所有用户点击“准备”后,游戏开始。用户点击“摇啊摇”后,服务器为该用户生成点数。所有用户都生成点数后,得到点数最大的用户。游戏结束。
本文忽略了房间的设置,把所有用户都统一到一个房间。
运行
运行Server
php Server.php
然后用浏览器访问index.html即可。可以同时用不同浏览器打开,以实现多用户同时在线的效果。部分运行截图如下:
1.服务器运行状态
2.用户准备中
3.用户摇骰子
4.游戏结束