位置: 编程技术 - 正文

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

  • 从香港向境外汇款怎么汇
  • 土地以租代卖,违法吗
  • 员工集体旅游费会计分录
  • 销售回扣分录
  • 企业接到税务稽查局电话
  • 发票限额是多少
  • 出口退税注销备注怎么填
  • 新办的营业执照多久可以注销
  • 利润表里的营业税金及附加如何计算
  • 分公司负债,总公司要负担
  • 残保金工资总额怎么算
  • 土地使用权出让金
  • 个税附加扣除如何填写合适
  • 专用发票上注明的税额是什么
  • 销售商品收到商业汇票属于什么科目
  • 银行代发工资一定要本行卡吗
  • 财产清查中固定资产盘亏
  • 土地使用权出让金收费标准
  • 亏损的结转分录
  • win10如何获得管理员权限修改文件
  • 医药批发行业增值税税负率
  • 试用产品无法收集
  • 利息收入结转时怎么做账
  • macos字体
  • 竣工结算审计费计入什么科目
  • 房屋租金应缴纳多少
  • 不动产售后回租如何处理
  • 财务负责人和法人哪个责任大
  • 二挡起步教程
  • 应征增值税不含税销售额(5%征收率)是什么意思
  • 汽车销售公司购置税账务处理
  • python time.ctime()如何做时间加减法
  • 劳务派遣工资是死的吗
  • 用友t3资产负债表怎么生成季报
  • sql server数据表
  • 劳务派遣人员代招聘多少钱一个人
  • 增值税计税销售额的确定
  • 股票股利发放形式是什么
  • 租赁房屋怎么做账
  • 挂靠设计公司费用标准如何记账?
  • 纳税人为风险纳税人怎么办
  • 事业单位项目结算审计报告
  • 微信转账没有显示对方的名字怎么办
  • 残保金工资总额是按计提还是发放
  • 公司怎么才算正常经营
  • 产品是如何产生的
  • mysql数据库内存占用高
  • mysql存储过程视频教程
  • sql server 3417错误
  • sql server常规错误
  • WP8版Creative Camera:相机详情介绍(图文)
  • centos云服务器
  • fdisk 分区表
  • win8打开桌面
  • windowsxp查ip地址
  • linux 文件管理命令
  • win10怎么取消禁用
  • XP IIS5.1 + PHP 5.2.1 + MySQL 5.0.37 + Zend 3.2.6 + phpMyAdmin-2.10.0.2环境配置
  • Win7旗舰版系统文件名称
  • 雨林木风软件网
  • linux关闭sh
  • linux与windows有哪些主要区别
  • win8 任务栏
  • win8删文件需要权限怎么弄
  • wind移动版
  • win7系统重启后黑屏不进系统
  • win8怎么打开远程连接
  • Win10 mobile 10586.107升级后会出现哪些bug?
  • unity outline性能
  • 推荐10 个很棒的电影
  • OpenGL ES Emulator比较
  • javascript中的this属性
  • 只指定行网络什么意思
  • js实现隔行换色
  • jq获取节点属性
  • jquery多级联动下拉菜单
  • 分摊费用怎么计算公式
  • 从国外进口设备需要缴纳增值税吗
  • 四川4050社保补贴政策什么时候发放
  • 武汉市江汉区财政局这个单位的公务员待遇怎么样?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设