位置: 编程技术 - 正文

php基于websocket搭建简易聊天室实践(phpwebsocket框架)

编辑:rootadmin

推荐整理分享php基于websocket搭建简易聊天室实践(phpwebsocket框架),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:phpwebsocket框架,websocket服务器端php,php建立websocket连接,phpwebsocket框架,php websocket 搭建,php websocket 搭建,php+websocket,php websocket 搭建,内容如对您有帮助,希望把文章链接给更多的朋友!

本文实例讲述了php基于websocket搭建简易聊天室实践。分享给大家供大家参考。具体如下:1、前言

公司游戏里面有个简单的聊天室,了解了之后才知道是node+websocket做的,想想php也来做个简单的聊天室。于是搜集各种资料看文档、找实例自己也写了个简单的聊天室。

http连接分为短连接和长连接。短连接一般可以用ajax实现,长连接就是websocket。短连接实现起来比较简单,但是太过于消耗资源。websocket高效不过兼容存在点问题。websocket是html5的资源

2、前端

前端实现websocket很简单直接

3、后台

websocket的难点主要在后台

3.1websocket连接过程websocket 通信图解 这是一个简易的客户端和服务端的通信图解,php主要就做的就是接受加密key 并返回 其中完成套接字的创建和握手操作

下图是一张详细的服务端处理websocket的流程图

3.2 代码实践

服务端做的流程大致是:

挂起一个socket套接字进程等待连接 有socket连接之后遍历套接字数组 没有握手的进行握手操作,如果已经握手则接收数据解析并写入缓冲区进行输出

下面是示例代码(我写的是一个类所以代码是根据函数分段的),文底给出github地址以及自己遇到的一些坑 1、首先是创建套接字

2、将套接字放入数组

3、挂起进程遍历套接字数组,主要操作都是在这里面完成的

4、进行握手 流程是接收websocket内容从Sec-WebSocket-Key:中获取key并通过加密算法写入缓冲区客户端会进行验证(自动验证不需要我们处理)

5、解析客户端的数据(我这里没有进行加密,如果有需要也可以自己加密 )

6、将套接字写入缓冲区

php基于websocket搭建简易聊天室实践(phpwebsocket框架)

7、运行方法

github地址git@github.com:rsaLive/websocket.git

①最好在控制台运行server.php

转到server.php脚本目录(可以先php -v 看下有没有配置php如果没有Linux配置下bash windows 配置下path)

php -f server.php

如果有错误会提示

②通过服务器访问html文件

8、踩过的坑,打开调试工作方便查看错误

①server.php 挂起的进程中可以打印输出的,如果出现问题可以在代码中加入打印来调试

可以在各个判断里面做标记在控制台查看代码运行在哪个区间

不过每次修改完代码之后需要重新运行脚本 php server.php

②如果出现这种错误可能是

1、在与服务器初始套接字的时候发送数据 (在第一次与服务器验证握手的时候不能发送内容)

2、如果已经验证过了但是客户端没有发送或者发送的消息为空也会出现这样的情况

所以要检验已连接的套接字的数据

③可能浏览器不支持或者服务端没有开启socket开始之前最好验证下

标签: phpwebsocket框架

本文链接地址:https://www.jiuchutong.com/biancheng/301678.html 转载请保留说明!

上一篇:详解php中 === 的使用(php中&&什么意思)

下一篇:PHP实现简易blog的制作(php如何实现)

  • 增值税结转会计科目
  • 税控盘白盘和黑盘一样吗
  • 小规模纳税人不开票收入怎么报增值税
  • 工会筹备金需不需要计提
  • 个税申报错了并且已经缴款怎么修改
  • 个税申报缴费
  • 其他业务利润包括哪些科目
  • 超过认证期限的发票未抵扣能红冲吗
  • 一般增值税纳税人和小规模纳税人
  • 作家以及作品
  • 房地产企业可以开专票吗
  • 机场工作人员的家属票
  • 事业单位职工福利费范围有哪些
  • 出售股份是利好吗
  • 计提增值税电费怎么算
  • 供应商不开票,还告我司不付款
  • 政府部门纳税人识别号查询
  • 哪些人可以享受4050社保补贴
  • 补贴与工资薪金一起发放,属于福利费,还是纳入工资薪金总额税前扣除?
  • 公司代扣的社保怎么做分录
  • 工程项目处理废旧钢材怎么入账的
  • 按照税收一般规定计算的折旧摊销金额
  • 鸿蒙系统怎么开发
  • 政府投资农业项目
  • 预计负债是什么原则
  • linux服务器常用命令
  • 赔偿材料做什么分录
  • pop3服务是什么
  • 竣工结算审计费计入什么科目
  • 会计虚假做账
  • 交易性金融资产的入账价值怎么算
  • 个体工商户减免个人所得税政策
  • 基础知识讲解
  • yolov8目标检测测试输出类别个数
  • 在计算应纳税所得额时,不允许作为税金项目
  • php获取操作系统
  • 无纸化办理
  • js删除对象的方法
  • 基于transformers的nlp入门 pdf
  • 改进的拼音
  • 深度学习如何训练出好的模型
  • php返回数组中所有的值的函数是什么?
  • 本年利润弥补以前年度亏损分录
  • 企业会计准则季报利润表填写
  • 长期待摊费用账务处理
  • 买资产买负债
  • 社保费和公积金一定要计提吗
  • mongodb启动命令 linux
  • 报销货物运输费需要什么凭证
  • 在私立医院就诊能报销吗
  • 差旅费 包括
  • 一般纳税人企业所得税税率2023
  • 按揭贷款买房是否划算
  • 出纳与会计现金的区别
  • 政府补助会计处理方法由总额法变为净额法
  • 股东往来款算投资款吗
  • 个体工商户法人可以变更吗?
  • 已使用的存货,计价方式不允许修改
  • 银行存款利息计算器在线计算器
  • 汇算清缴产生的企业所得税如何做账
  • 原始凭证填制要点在原始凭证上书写阿拉伯数字正确的有
  • 商业承兑汇票开票流程
  • mysql 5.7.34安装
  • 苹果电脑mac如何连接打印机
  • 怎样打开windows设置页面
  • 没有推送windows11
  • git 进阶
  • win7系统玩游戏怎么样
  • javascript date()
  • VS2012中C++,#include无法打开源文件
  • jsoncpp rapidjson
  • python解读
  • jquery选择器包含哪几大类
  • python运算符的用法
  • javascript取随机数
  • python爬虫详解
  • 新疆喀什泽普县海拔高度是多少米
  • 国税网站怎么登录进入
  • 印花税票有什么用
  • 出口退税 即征即退属于政府补助吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设