位置: 编程技术 - 正文

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小规模免税收入会计分录怎么写啊
  • 社保与个税有关系么
  • 金税四期正式启动
  • 分公司可以独立签约吗
  • 哪些进项税额可以转出
  • 往来账项询证函一定要回复吗
  • 个税累计扣除项目合计2712.5是什么
  • 高新技术企业所得税减免怎么算
  • 经营范围预付卡是什么
  • 结转累计折旧分录
  • 企业收到非金融机构利息收入怎么做账务处理
  • 离退休人员再任职的规定
  • 玻璃制品有哪些
  • 实收资本的印花税减半征收吗
  • 集团内部拆借资金
  • 税务局如何检查上传的发票
  • 房地产土地增值税筹划
  • 股权转让的公允价值
  • 外币折算差额计入什么科目
  • 制造费用和劳务成本
  • 未成立工会组织情况说明
  • 企业拆迁 补偿
  • win11开机黑屏进不去桌面
  • 买一个金蝶软件年费多少
  • 生产成本在资产负债表中怎么填
  • 期末未抵扣数
  • 产品成本的计算过程也就是各种费用界限的划分过程
  • 企事业承包承租经营所得税税法
  • linux aptx
  • 进口关税和增值税
  • 收到服务费的发票怎么做
  • PHP:session_cache_limiter()的用法_Session函数
  • 房屋租赁会同
  • php 调用函数
  • 分期付款购买固定资产折现率怎么算
  • 转让应收账款会计分录
  • 班迪录屏软件录制框怎样在ppt上一直指定
  • css中权重值是什么意思
  • 销售自用的小汽车赚钱吗
  • 小企业会计准则调整以前年度费用分录
  • 发票开具的常见错误以及盖章问题
  • python中lambda用法
  • 企业应付账款科目的借方余额反映的是
  • 企业所得税和个人所得税都要交吗
  • 其他应收款财务报表取数
  • 税前扣除的意思
  • 以前年度损益调整借贷方向
  • 购买办公用品如何节约成本
  • 营业外收支计算公式
  • 进口葡萄酒政策
  • 个人咨询费发票怎么开
  • 税控系统全额抵扣增值税申报
  • 资产负债表负债率怎么计算
  • 企业应如何正确经营
  • mssql in
  • mysql里删除表里的数据
  • linux内核模块编译步骤
  • win7系统硬盘分区类型
  • win7 便签
  • win10外置光驱读不出光盘怎么办
  • linux系统怎么查看root用户密码
  • win8打开蓝牙设置
  • 升级win10后悔了
  • 近期win7蓝屏
  • 请问在javascript程序中
  • Extjs 4.x 得到form CheckBox 复选框的值
  • 怎样从零开始
  • javascript resources
  • js设计模型
  • 同源策略详解
  • 嵌入式安卓开发入门
  • 新收入准则租赁业务
  • 中国有多少人2022
  • 物流企业需要缴税吗
  • 成都市武侯区地址
  • 上饶市国家税务局各县区办公楼修缮
  • 福建省税务局 电子
  • 沈阳特慢病待遇
  • 会计基础工作规范2024
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设