位置: 编程技术 - 正文

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如何实现)

  • 增值税税控系统技术维护费
  • 出口退税无纸化备案怎么弄
  • 机械租赁属于什么分类
  • 注册资本印花税按年申报还是按次申报
  • 固定资产的原值是含税价?
  • 怎么确定开票项目是否属于经营范围
  • 电子承兑被拒付(可拒付追索)
  • 专票3个点和6个点哪个多
  • 民非企业增值税减免账务处理
  • 出口退税的报关单当月可以申请退税吗?
  • 机关单位工会经费的来源包括
  • 购买办公室电脑桌分录
  • 契税的发票开错了还可以作废吗?
  • 购买货物待销售会计分录
  • 增值税专用发票有效期是多长时间
  • 产值指的是财务报表哪个数值
  • 物业维修收费合理吗
  • 企业筹建期购买设备是否可以扣除
  • 1697509439
  • 委托加工应税消费品收回后直接销售
  • 收到政府补助的现金流
  • 印花税多计提如何冲回
  • 内部控制的概念最早是从什么得来的
  • 上年度的费用今年怎么算
  • 往来款能转为投资款的说明
  • 政策性搬迁损失扣除年度
  • 进口小汽车消费税率
  • 税务发票上的账户是对公账户吗
  • 被辞退有补助金吗
  • php面向对象面试题
  • 企业与政府所签的合同
  • 印花税怎么计提和结转
  • vue全家桶插件有哪些
  • 像指纹一样的图形
  • 前端html模板
  • 广告费与业务宣传费范围
  • 财务公司可以开立一般账户吗
  • 社会保险基数怎么办
  • 公益性捐赠递延注会
  • 党费返还怎么记账
  • 费用在发生时确认而不考虑支付费用
  • dedecms5.7
  • 长期待摊费用核销
  • powerdesigner生成pdm
  • 小规模企业免税收入会计分录
  • 请培训老师的费用怎么处理
  • 建筑公司包工包料提供建筑服务
  • 什么公司可以核定企业所得税
  • 贸易公司开发票进项跟销项不符合怎么办?
  • 应收账款全额计提的条件
  • 企业购买黄金该交什么税
  • 人工费怎么核算
  • 工会经费计提比例0.8%和2%有何区别
  • 多做费用有什么好处
  • 分公司从业人数填越少越好吗
  • 暂估的进项税额怎么抵扣
  • sql server如何远程登录
  • sql导入和导出数据
  • mysql查询结果是什么类型
  • win10每次开机都假死机
  • 如果不用2b橡皮擦2b铅笔 能扫的出来吗
  • 微软正式推送windows11
  • centos fio
  • win10 打开文件
  • redhat无法启动
  • win10开机6秒
  • win7系统怎么设置浏览器主页
  • win8怎么下载itunes
  • ug输入代码
  • js中的require用法
  • unity3d知乎
  • python队列只能一个个读取吗
  • WINDOWS中使用磁盘清理的主要作用是为了什么
  • 个人可以到税务开物业费的
  • 互联网新闻信息服务提供者为用户提供互联网新闻
  • 深圳税务服务大厅电话
  • 重庆市国税电子税务局
  • 上海市税务局的电话
  • 专用发票收款人可以盖私章吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设