位置: 编程技术 - 正文

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

  • 企业当期应纳增值税
  • 个人独资企业要承担无限责任吗
  • 股权转让分期付款合同范本
  • 银行询证函快递怎么查
  • 加油票抬头开错可以更换吗
  • 综合所得预扣预缴表在哪里查
  • 资产负债表应交税金负数是什么意思
  • 营改增之后对企业的影响
  • 非上市公司自然股权转让
  • 建筑业营改增主要政策一览表
  • 外购自用需要缴纳增值税吗
  • 出纳都需要做什么表格
  • 汇算清缴跨年发票
  • 专票金额和实际报销金额不符
  • 医院业务支出包括哪些内容科目
  • 周转材料属于什么会计要素
  • 合并报表汇兑损益怎么填
  • 营改增之后还有营业税吗
  • 只转让地上的建筑怎么办
  • 增值税简易征收一览表
  • 对于不需要交强险的人
  • 银行支票怎么用
  • 应收账款 转让
  • 购买工程资质文件怎么写
  • i7 5960X评测跑分参数介绍
  • 无法连接到移动网络小米
  • 笔记本电脑保养常识电池
  • 债务重组法律服务方案
  • nginx配置php项目
  • 停在花朵上,好像在认真的听同学们读课文修改病句
  • 社保比例调整后多久生效
  • 今日清明是清明开始还是结束
  • 职工教育经费可以有余额吗?
  • php点击下载
  • 怎么调整利润分配
  • 应计入财务费用的科目是
  • 股权转让怎样能不交税 认缴
  • 车辆保险费怎么入账
  • php判断https
  • mysql使用ssl连接
  • 加油充值预付卡怎么做账
  • 红字发票还要交税吗
  • 个体户可以开多少免税发票
  • sqlyog配置
  • 超市的小票能入账吗
  • 跨年发票分录
  • 去年的分红奖金是多少
  • 施工企业的成本核算
  • 审计库存现金盘点表
  • 账务处理程序是指什么
  • 医保账户收入金额是怎么算的
  • 银行利息为什么用红字
  • 管理会计期末存货量怎么算
  • 百分百控股收益都是股东的么
  • 公司股东为另一家公司全股
  • 利税总额怎么算?
  • sql语句行转列
  • window10桌面有白色框
  • wrme.exe是什么
  • ubuntu20.04快捷键
  • 任务栏图标右键
  • xp系统如何取消开机自动启动程序
  • win7系统搜索不到自己家wi-fi
  • node.js连接mysql的数据怎么可视化
  • windows恢复版本
  • nodejs基础
  • js的变量
  • 谈谈对人才是第一资源的理解
  • unity2d角色换装
  • 瀑布流水风景图片
  • android菜鸟教程
  • javascript define的用法
  • 财政票据和税务票据的法律效力一样吗
  • 河北电子税务局新版登录
  • 中央与地方增值税
  • 怎么查税务专管员是谁的名字
  • 青岛怎样网上交医保
  • 政务公开事项目录编制
  • 财税公司经营范围介绍
  • 法治税务宣传标语
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设