位置: 编程技术 - 正文

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

  • 计算应纳税所得额时 不得扣除支出有哪些
  • 金税三期是什么时候投入使用的
  • 资质费用是什么意思
  • 增值发票每月上报是怎么个程序吗
  • 开票服务费全额抵扣分录
  • 收入费用率为100.13%说明什么
  • 预缴企业所得税怎么做会计分录
  • 技术服务税率是多少 现金
  • 软件和硬件可以用什么代名词
  • 外出经营能自带食物吗
  • 餐饮业购买餐桌椅会计分录
  • 固定资产赔偿制度
  • 单次劳务费税率
  • 行车记录仪怎么开发票
  • 耕地占用税和土地使用税的区别
  • 通发票备注栏写什么内容
  • 职工报销差旅费会计科目
  • 什么情况下税务会查账
  • 在会计上跨季度增值税专用发票怎么进行红冲?
  • 退租水电费从押金里扣除
  • 银行收取年费是什么意思
  • 小规模企业需要汇算清缴吗
  • 固定资产提前报废账务处理
  • 固定资产入账包括税额吗
  • 推广服务费收入如何核算成本
  • win11桌面图标如何固定不动
  • 民间非营利组织会计制度会计科目
  • linux aptx
  • bass boost system
  • php yeid
  • 影响当期损益的税费
  • 集群怎么写
  • php抓取网页图片
  • 删除数组中某个值的数
  • 什么是对账单的回函
  • 以前年度少记税金及附加
  • flex布局教程实例篇
  • 银行存款余额调节表是不是原始凭证
  • chattr i
  • es6promise的理解
  • gpt最大
  • php简单获取网站的方法
  • 帝国cms建站实例教程
  • 净资产怎么增长
  • 国税实名认证手机号如何解绑
  • 自查补税行为有哪些方面
  • 股份支付属于应付职工薪酬吗?
  • 企业亏损所得税处理
  • 计入职工福利费的房租折旧属于人工成本吗
  • 部分红冲的发票无法勾选怎么办
  • 公司奖励员工制度
  • 留底税额怎么形成的
  • 为什么银行结息不加入账户
  • 外贸公司出口退税进项发票没及时开票有影响吗
  • 对公账户可以转让吗
  • 所得税预缴多了可以不退税嘛
  • 弥补以前年度亏损后缴纳所得税
  • 办公室装修费用怎么入账
  • 企业中征码怎么生成
  • MySql insert插入操作的3个小技巧分享
  • sql server 复制数据库具体操作图解
  • win8系统之家官网
  • centos怎么修改文件权限
  • 为快捷方式建立快捷方式
  • Kali(debian) Too many open files 错误处理办法
  • windows系统后台不显示QQ等软件(任务栏右侧不显示QQ图标)
  • Linux Kernel 4.5在3月15日发布最终版
  • xp系统设置共享显存
  • Deepin 2014.2正式版下载 和安装教程
  • cmd是什么意思 视频
  • imac怎么查使用时间
  • 全面了解自我,接纳和包容自我
  • android获取音频信息
  • 魅蓝notezol
  • android布局背景颜色的代码
  • 张孝祥西江月
  • python3获取本机ip
  • javascript 对象的this指向
  • 汽车发票含税吗
  • 广东税务查询系统
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设