位置: 编程技术 - 正文

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

  • 出租房屋收取水电费 能计收入吗
  • 应纳税所得额是利润总额吗
  • 职工薪酬纳税调减的情况
  • 印花税是根据销售额提吗
  • 普票为啥不能抵扣
  • 收到商业承兑汇票到期,向银行办妥有关入账手续
  • 收到红字发票如何申报增值税?
  • 这个月只有进项没有销项
  • 付款金额比发票金额少怎么办
  • 购入货物自用的进项税额转出分录怎么处理
  • 不是企业性质的民办学校要交什么税
  • 代驾费开增值税专票还是普票?
  • 贸易公司一般纳税多少
  • 仓储费专用发票可以抵扣吗?
  • 资产减值损失列示在利润表哪里
  • 企业所得税预缴税款表怎么填
  • 营改增建筑业
  • chrom无法访问
  • 事业编党费如何核算
  • 这张磁盘有写保护无法格式化
  • 华为分享平时可不可以打开
  • 官网下载的iso怎么用u盘安装
  • 外籍人员个人所得税政策2023规定
  • ChatGLM-6B (介绍相关概念、基础环境搭建及部署)
  • php正则函数内容匹配
  • PHP:zip_entry_close()的用法_Zip函数
  • 其他应收个人贷方余额表示什么意思
  • vite配置详解
  • 享受小型微利企业税收优惠的条件
  • 萨勒克国家公园课文
  • chatgpt的多种免费使用方式
  • php的mysql_query
  • c#怎么使用
  • touch命令创建多个文件
  • php wechat
  • 命令行文本编辑
  • 新会计准则增加了哪些科目
  • 冲销去年暂估成本对企业所得税的影响
  • 帝国cms安装教程
  • mongodb管道操作符
  • 为什么结转材料成本差异
  • 稽查查补的税款由谁追征
  • 发票的规格型号有字数限制吗
  • 企业给员工的福利体检报告
  • 建筑业增值税税负率一览表
  • 外购商品发给员工要交个税吗
  • 收到政府的资本公积可以投入子公司吗
  • 债券溢价什么意思
  • 结转损益结转了两次咋办
  • 红字更正法和红字冲销
  • 经营利润所得税费用
  • 收到代理服务费怎么做分录呢
  • 广告公司如何开展业务
  • 什么叫临建工程
  • 房地产企业收入确认条件税法
  • 财务软件摊销年限的最新规定
  • sql数据库监控工具
  • mysql 一键安装
  • win7端口怎么查看
  • centos bz
  • 虚拟机vmx
  • linux sed-i
  • linux自动获取校时服务器时间
  • windows7电脑无法正常运行
  • win7电脑dns存在问题怎么修复
  • js中如何实现数字相加
  • jquery日程安排
  • vue.js作用
  • python xml dom
  • android software
  • android 图片视频轮播框架
  • js闭包作用问题解决应用
  • 如何安装python环境安装包
  • JS与jQ读取xml文件的方法
  • 广州地税预约网官网
  • 税款所属期起止日期
  • 货车附加费多少钱
  • 江苏电子税务局社保缴费查询网站
  • 税控防伪清单
  • 税务注销了怎么查看纳税申报表
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设