位置: 编程技术 - 正文

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

  • 印花税的计税方法
  • 职工旅游不计入福利费
  • 印花税和增值税一起扣款有影响吗
  • 购货方收到红字发票
  • 冲减营业税金及附加的分录
  • 发票与入库单明细不一致税务可以吗
  • 个人独资企业注册流程
  • 非营利性科研机构接受企业基础研究收入免征企业所得税
  • 应付账款坏账处理分录怎么写
  • 部门独立核算管理制度
  • 给了钱不给发票可以报警吗
  • 怎样冲减虚开发票的会计分录
  • 股东以实物出资需要交税吗
  • 房地产预缴增值税是含税还是不含税
  • 收到借款是承兑付款吗
  • 差额征税扣除额大于收入时如何开票?
  • 发票签收单怎么填
  • 专项附加扣除什么时候返还
  • 外贸企业出口货物会计账务处理
  • 充电话费送的
  • 委托出口货物怎么办理退免税?
  • 国外企业提供国际运输服务税率
  • 客户到款打到子公司账上如何转回
  • 银行存款利息的计算方法
  • 本年利润余额的计算公式
  • 房屋出租预收租金房产税纳税义务发生时间
  • 在linux中使用什么命令可以动态查看文件内容
  • linux系统文件压缩命令
  • 索尼vpcea200c笔记本
  • 商业银行的票据贴现业务与票据抵押贷款业务的区别
  • 前端项目中遇到的最大困难,怎么解决的
  • 其他业务收入跨年调整
  • 所有者权益会计要素包括
  • php自定义协议
  • 取得增值税发票的认证期限是多久?
  • 收取的延期付款利息会计调账处理
  • php自定义变量的方法是
  • vue前端开发常见问题
  • 跨的基本功有哪些
  • OpenCV之 BGR、GRAY、HSV色彩空间&色彩通道专题 【Open_CV系列(三)】
  • maven安装成功命令
  • Yii2中SqlDataProvider用法示例
  • 溢价购买子公司账务处理
  • 帝国cms8.0
  • 怎么能开公司
  • 银行账户维护费怎么做账
  • 资产处置损益算营业外收入吗
  • 购买税控设备的分录怎么做
  • 主营业务成本结转本年利润会计分录
  • 建筑安装的扩展性是指
  • 其他综合收益影响留存收益吗
  • 公转私户违法吗
  • 去年少计提费用
  • 如何理解会计的本质
  • 融资租赁中承租人的义务
  • 车贷管理费合理吗
  • 缴纳工会筹备金应该记什么科目
  • 注销基本户必须注销专户吗
  • 其他应付款的借贷方分别表示什么
  • 转出投资款计入现金流量表的哪里
  • 机票行程单可以抵扣进项税吗?
  • 财务费用怎么记账
  • sql server减法
  • debian系统教程
  • windows7创建新桌面
  • win7系统的启动项在哪里
  • windows七如何连接网络
  • 进程 电脑
  • jQuery实现非常实用漂亮的select下拉菜单选择效果
  • 在dos下删除文件
  • nodejs快速入门
  • jquery插件是干什么的
  • 访问网页显示脚本错误
  • android Intent Flags详解
  • 用python过滤列大于0的值
  • python bilt
  • 支付给境外的咨询费需要什么资料
  • 出口退税申报时间是每月15号吗
  • 江西公安电子证件
  • 税务2021年认真落实各项工作
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设