位置: 编程技术 - 正文

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

  • 进项税额转出完整会计分录怎么做 案例
  • 企业购进固定资产
  • 研发费用加计扣除是什么意思啊
  • 当年亏损额为什么不能填?
  • 年末计提坏账准备金额怎么算
  • 销货退回的税务处理
  • 劳务费个人所得税怎样计算
  • 其他应收款如何清理
  • 母子公司间借款利息交税吗
  • 所有者权益是
  • 咨询公司所得税税负率是多少合适
  • 公司支付代账费怎么入账
  • 补交以前年度城建税和滞纳金怎么做账
  • 科技人员股权奖励
  • 现金支票怎么支付的
  • 退休工资缴纳个人所得税税率表
  • 事业单位财政直接支付账务处理
  • 企业短期贷款进什么科目
  • 有了营业执照就可以买社保了吗
  • 慈善会可以开什么票据
  • 融资性售后回租按什么缴纳增值税
  • 增值税普通发票红冲之后还能查询吗
  • 无偿使用房屋
  • 有限合伙创投企业
  • 以前年度的财务报表还可以找出来吗
  • 如何修改系统时间为12/24小时制
  • 设备的折旧率是什么意思
  • 冲销上月暂估入账的原材料会计分录
  • 专家评审费如何报账
  • 代金券与抵扣券的区别
  • w10的蜘蛛纸牌
  • 预收账款什么时候确认增值税
  • 截图快捷键ctrl+alt+
  • PHP:pg_unescape_bytea()的用法_PostgreSQL函数
  • php 正则表达式
  • Php实现邀请用户加入企业生成邀请链接
  • 新能源企业所得税税率是多少
  • 其他收益会计科目怎么写
  • 什么时候进项税转出
  • 小规模工程服务开票几个点
  • 延期缴纳税款的问题
  • sqlserver数据表在哪里
  • 小规模纳税人增值税专用发票税率
  • 跨年租金如何确权
  • 一般纳税人公司出售旧车怎么开票
  • 小微企业的资产负债率一般为多少
  • 企业资金管理是什么意思
  • 自用房产税计入什么科目
  • 招待客人会计分录
  • 固定资产融资租出计入什么科目
  • 工程未竣工预付款怎么办
  • 软件开发的知识产权有哪些
  • 结存成本会计分录
  • 开来发票没有付款可以进入费用吗?
  • 简述工作底稿的一般要求及内容
  • sql数据库检查命令
  • bios设置从光驱启动优先,可是启动不了
  • mac苹果电脑如何开4个微信号
  • window 查看端口
  • windows8联网
  • win7系统开机后很卡什么原因
  • javascript中
  • js正则表达式gi
  • android消息队列使用
  • sqlite数据库修改及升级
  • vmwareUbuntu虚拟机硬盘扩容
  • jquery+ajax实现注册实时验证实例详解
  • apktool修改包名
  • python中random模块用法
  • 简略说明本岗位最高风险的防范措施和现场处置方案
  • unity如何成一组
  • java中的多态性
  • context和getApplicationContext()介绍
  • 关于草丛:单局游戏内
  • java script怎么学
  • ajax获取数据两种类型
  • 车辆保险开增值税吗
  • 辽宁省地税社保缴费基数
  • 上海税务局实名认证流程
  • 供热企业税收优惠政策执行情况
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设