php webscokt_用php基于swoole实现websocket通讯的聊天室

本文介绍了如何使用Easyswoole框架和PHP实现WebSocket通讯,特别是通过自定义WebSocketParser类解析消息,并创建WebSocket控制器处理客户端请求,以此搭建聊天室。涉及到的关键步骤包括设置WebSocket服务器、注册服务、创建WebSocket控制器以及前端测试。
摘要由CSDN通过智能技术生成

前言

大多人都习惯用PHP做WEB编程,很少有人用php实现websocket通讯,因为在PHP中,从socket的连接、建立、绑定、监听等都需要开发者自己去操作完成,对于初学者来说,难度方面也挺大的,因此我们用Easyswoole这个框架来实现聊天室的建立。

1、socket协议的简介

2、介绍client与server之间的连接原理

3、PHP中建立socket的过程讲解

4、用一个聊天室作为实例详细讲解在PHP中如何使用socket

WebSocket控制器

EasySwoole 3.x支持以控制器模式来开发你的代码。

首先,修改项目根目录下配置文件dev.php,修改SERVER_TYPE为:

'SERVER_TYPE' => EASYSWOOLE_WEB_SOCKET_SERVER,

并且引入 easyswoole/socket composer 包:

composer require easyswoole/socket

警告:请保证你安装的 easyswoole/socket 版本大 >= 1.0.7 否则会导致ws消息发送客户端无法解析的问题

新人帮助

本文遵循PSR-4自动加载类规范,如果你还不了解这个规范,请先学习相关规则。

本节基础命名空间App 默认指项目根目录下App文件夹,如果你的App指向不同,请自行替换。

只要遵循PSR-4规范,无论你怎么组织文件结构都没问题,本节只做简单示例。

这里的命令解析,其意思为根据请求信息解析为具体的执行命令;

在easyswoole中,可以让TCP、WebSocket像传统框架那样按照控制器->方法这样去解析请求;

请先阅读TCP控制器实现章节,将以简明的文字讲述原理,以下代码较多,主要提供示例。

解析器需要实现EasySwoole\Socket\AbstractInterface\ParserInterface 接口中的decode 和encode方法;

实现命令解析

创建App/WebSocket/WebSocketParser.php文件,写入以下代码

namespace App\WebSocket;

use EasySwoole\Socket\AbstractInterface\ParserInterface;

use EasySwoole\Socket\Client\WebSocket;

use EasySwoole\Socket\Bean\Caller;

use EasySwoole\Socket\Bean\Response;

/**

* Class WebSocketParser

*

* 此类是自定义的 websocket 消息解析器

* 此处使用的设计是使用 json string 作为消息格式

* 当客户端消息到达服务端时,会调用 decode 方法进行消息解析

* 会将 websocket 消息 转成具体的 Class -> Action 调用 并且将参数注入

*

* @package App\WebSocket

*/

class WebSocketParser implements ParserInterface

{

/**

* decode

* @param string $raw 客户端原始消息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值