Swoole和WebSocket之斗地主上篇进房间

  • Swoole和WebSocket之斗地主上篇进房间已关闭评论
  • 123 views
  • A+
所属分类:PHP
Swoole和WebSocket之斗地主上篇进房间

这篇文章主要讲解通过Swoole 和 webSocket 来实现斗地主的用户进入房间功能,这也是实现斗地主的第一步。实现整个斗地主分为三篇文章来讲解这是第一篇。 
在技术栈方面主要使用phpswoolehtml5:webSocketpixi.js, 数据存储采用redis。 主要实现效果如下图:

开始

在开始之前我们默认已有php开始环境。我们只需要安装swoole扩展,redis扩展redis

  1. 安装swooleredis.
  2. 下载pixijs库, 当然你可以使用远程的. (一个绘制2D图形的引擎)
  3. composer.json 编写, 之后执行安装命令即可composer install.
  1. 建立入口(index.html)文件,资源目录,服务目录和文件。如图:
Swoole和WebSocket之斗地主上篇进房间

功能实现

我们需要实现websocket和后台服务的对接。制定协议格式,比如协议名,内容,返回值。

进入房间

一个斗地主流程比较完善应该是:

我们在这里的实现直接从进入房间开始。用户直接打开网页就是进入房间。

  • 功能分析

当前用户进入房间之前,我们需要在页面显示当前房间有多少人等待,进入成功之后我们需要告知其它用户有人进来了。从上面得知我们需要一个获取当前房间有多少人的协议, 
这些人的状态是什么(准备中未准备),还需要一个进入房间的协议,该协议要实现广播告知其它用户,而客户端也需要监听进入房间的广播消息。

  • 服务端

我们先从服务端代码开始编写. 根据上面的分析我需要实现两个协议. surf也是一个MVC形式的框架. 我们只需要实现自己的业务控制器就行了. 
在这里我们使用框架自带的json数据传输类型来解析.

  1. 入口文件landowner.php
  1. 协议路由protocol.php
  1. 控制器的实现LandownerController.php
  • 客户端

在客户端我们这里使用原生的webSocket进行通信,pixijs引擎进行渲染界面. 在这里封装了一个简单的websocket使用类. 整个socket类代码.

实现的客户业务代码

入口文件index.html

以上服务端和客户端代码就完成了用户进入房间功能。下一期我们讲下准备,发牌的实现.

源码地址

https://github.com/TianLiangZhou/loocode-example/tree/master/landowner

效果地址

https://example.loocode.com/landowner/index.html

推荐阅读

  1. https://wiki.swoole.com/
  2. https://github.com/TianLiangZhou/surf
  3. https://pixijs.io/examples/
  4. https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API
  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin