位置: 编程技术 - 正文

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

  • 跨境电商小规模好还是一般纳税好
  • 投资收益所得税前扣除
  • 固定资产一次性折旧政策2023
  • 安全生产费实际发生必须是付款吗还是挂帐也可以
  • 运输企业内账
  • 投资性房地产出售时公允价值变动损益
  • 增值税税控服务费的账务处理
  • 企业申报表有异常期间可以更换财务负责人吗
  • 为什么出现补交税
  • 销售自己使用过的物品免税吗
  • 过渡性税收优惠是什么意思
  • 客户充值
  • 自然人股权转让要交什么税
  • 个人投资收益要交所得税吗
  • 跨县提供建筑服务增值税申报
  • 房地产开发经营属于什么行业类别
  • 代缴水电费是什么意思
  • 未分配利润调整到其他应付款
  • 金税盘开票出现离线发票金额超出限制怎么设置?
  • 账务不符怎么写
  • 企业账面库存过大应怎样处理好
  • 计算当期应纳税额
  • 视同销售收入如何调整?
  • linux CentOS WEB服务器分区方案
  • 电脑的c盘变红怎么回事
  • macOS Big Sur 11.2 开发者预览版 Beta如何更新?
  • win10电脑电源选项怎样设置最好
  • SetPoint.exe - SetPoint是什么进程 有什么用
  • PHP:checkdate()的用法_Date Time函数
  • 增值税申报时,里面没有数据怎么办
  • php socket_create
  • vue setstate
  • php时间戳转换成时间
  • phpcms添加内容
  • 发票勾选了还能冲红吗
  • mysql分区语句
  • 个人所得税转账扣除子女教育那个什么时候可以提交
  • 当月已付款, 没收到发票怎么做账
  • 公司开具手工发票怎么开
  • phpcms使用教程
  • sql server 防止表锁死
  • 出口退税相关税法文件
  • 政策性搬迁涉及的税种
  • 如果企业长期股票怎么办
  • 销售免税农产品的会计分录
  • 印花税计入相关资产成本吗
  • 营业利润率高好还是低好
  • 委托出口由谁办理退税
  • 关于利润分配科目的表述正确的有
  • 陪标收费标准
  • 非流动资产增加意味什么
  • 旅游费用如何记账科目
  • innodb_trx表
  • win7怎么把桌面图标显示出来
  • Linux x86_64下安装Flash Player 9
  • windows无法打开添加打印机
  • win10rs2是哪个版本
  • office2016formac更新了什么 新版macoffice软件功能一览
  • w10 xbox
  • windows8能免费升10吗
  • win10系统onenote不能用
  • 学习笔记一
  • 适配器模型
  • javascript sort排序
  • 文本框几种常用属性
  • android 像素
  • 商务英语考英语笔译 算跨考吗
  • python中字符串的方法
  • unity3d跨平台
  • JavaSacript中charCodeAt()方法的使用详解
  • js实现组件功能
  • javascript的简介
  • jQuery Timelinr实现垂直水平时间轴插件(附源码下载)
  • “python”
  • javascript对象定义
  • 航天金税软件怎么下载
  • 个税纳税证明在哪里开
  • 如何查看自己公司的税种
  • 浙江蹦极哪里好玩
  • 股东向公司借款需要什么手续
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设