位置: 编程技术 - 正文

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

  • 什么是土地使用权终结
  • 佣金和手续费支出 纳税调整
  • 发票连续作废两次
  • 受托代销商品款是什么科目
  • 城市维护建设税怎么做分录
  • 预算会计工资是应发工资还是实发工资
  • 应交税费进项税额属于什么科目借贷方向
  • 可转换债券发行主体
  • 外聘人员需要扣个人所得税吗
  • 钱汇错需要退回应该怎么做分录?
  • 企业销售产品的成本是指已销产品的
  • 电费 进项税
  • 供应商不给我们开发票,我怎么入账
  • 水利事业单位基建并账分录怎么写?
  • 小规模纳税人开专票和普票的区别
  • 土地增值税预缴税率
  • 拍卖的房产
  • 一般纳税人提供非学历教育可以简易计税吗
  • 企业所得税季度预缴纳税申报表
  • 小规模纳税人废品站卖废品发票开什么项目
  • 长期股权投资佣金手续费计入
  • 其他综合收益要转入投资收益吗
  • 发票抬头写个人税号怎么写
  • 商砼税率是多少
  • 其他应付款调整到其他应收款
  • 应付职工薪酬在借方是什么意思
  • 共管帐户的特点是什么
  • 农产品成本法计算抵扣
  • 初级会计应收账款例题
  • 电脑每次开机都要磁盘检查是什么原因
  • 俄勒冈州邮编
  • 增值税检查调整科目还在用吗
  • PHP:JDToGregorian()的用法_日历函数
  • 生产企业出口退税申报流程操作
  • php实现留言板功能
  • php中类静态成员描述不正确的是
  • php比较大小
  • 投资收益属于营业外收入吗
  • 发票校验码不清晰
  • 捐款怎么处理
  • 个体工商户使用个人二维码收款违法吗
  • pytorch广播相乘
  • 2023年中国会有什么重大事件
  • dd命令拷贝磁盘
  • 非居民纳税人工资个人所得税税率
  • ecs怎么用
  • 驱动开发:内核是什么
  • 破产清算不够支付员工补偿金
  • 小企业会计准则适用于哪些企业
  • 1000元的打印机双十一满减可以减150吗少
  • 欠供应商货款会坐牢吗
  • 跨年进项发票怎样账务处理
  • 食堂员工私自拿东西怎么办
  • 小规模纳税人开专票税率是多少?
  • 跨年度的银行未入账如何处理
  • 代缴社保会计分录
  • 现金支票取现的法律规定
  • mysql优化配置文件
  • 在SQL Server中使用存储过程的优点包括
  • windowsxp休眠设置
  • linux awk排序
  • centos哪个版本最好用2022
  • windows10周年更新
  • 验证win10
  • win8系统的运行在哪
  • win8系统笔记本忘记开机密码怎么办
  • 铁嘴李林
  • unity调用android方法
  • cocos2djs教程
  • 批处理应用实例
  • jQuery基于ajax()使用serialize()提交form数据的方法
  • 安卓手机管家哪个好用
  • 欢欢长大了的童年
  • 如何用js动态创建div
  • jquery的$作用
  • 2000元工资交多少党费
  • 2022河南省地方专项计划分数线
  • 上海ca证书税务的怎么开通
  • 自然人电子税务局怎么设置申报密码
  • 外贸公司如何开发客户
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设