位置: 编程技术 - 正文

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

  • 会计所得税公式怎么算
  • 增值税先征后退会计处理
  • 定期定额个体工商户怎么报税
  • 小规模纳税人购入和销售的增值税
  • 资产减值损失可以抵税吗
  • 利润表管理费用怎么算
  • 注销公司报表应注意什么
  • 房地产企业购入用于建造商品房的土地使用权
  • 应付职工薪酬包括哪些内容
  • 持有待售资产固定资产 要计提折旧吗
  • 必须开具增值税专用发票
  • 公司转工程款到个人银行卡需要交个税吗
  • 结转本年度收入
  • 销货清单和发票金额不一致
  • 增值税晚交一个月会怎么样
  • 投资收益如何做账
  • 发票勾选平台显示不成功
  • 水利建设专项收入的税率是多少?
  • 企业出租收入增值税税率
  • 建筑企业法定代表人和建筑公司资质不是一个人
  • 委托代付工程款会计分录
  • 公司购买的机票赔偿可以退公司嘛
  • 社保买房公积金
  • php快递查询系统
  • 网关设置
  • 艾叶泡脚的方法和注意事项
  • 处理车辆违章送什么证件
  • php __destruct
  • 电脑桌面小工具软件
  • 股份支付有哪些基本类型
  • 什么叫非同一控制下
  • 伊莎贝尔公主
  • thinkphp5教程
  • 企业新产品销售收入数据
  • 设计公司的设计提成方案
  • 小规模拍卖公司怎么开票
  • 货物退回会计分录怎么做
  • 基于php判断客户是否存在
  • 企业销售固定资产房屋都要交什么税
  • 生产型外资企业
  • 私对公开发票需要什么
  • mongo聚合查询效率问题
  • dedecms怎么改图片
  • 专项应付款 会计分录
  • 母公司与子公司内部合作协议
  • 所得税申报表营业成本包括哪些
  • 月末需要计提
  • 递延收益是什么负债
  • 一般纳税人销售旧货
  • 福利费的进项税额可以抵扣吗
  • 母子公司之间的借款
  • 提前预支工资怎么打条子
  • 外币资本金入账汇率怎样选择
  • 租房公司报销发票怎么开
  • 劳务派遣证验资
  • 没有发票的费用可以税前扣除吗
  • 稽查人员是干嘛的
  • sql server 自增列设置语句
  • fedora最新版本
  • centos7编译安装内核
  • win10预览版好吗
  • xp系统几位操作系统
  • linux乱码怎么办
  • linux系统怎么更改语言
  • cocos做游戏
  • bootstrap 组件库
  • EXTJS记事本 当CompositeField遇上RowEditor
  • 位图字体图片
  • jqueryvalidate验证
  • python搜索引擎网络爬虫
  • jquery移动节点的方法
  • python内置函数用来打开或创建文件并返回文件对象
  • 在JavaScript中声明变量的关键词有
  • javascript实现2016新年版日历
  • python27文件夹
  • 保险是不是跟车走
  • 国家税务局湖南电子税务局登录
  • 大连天气app
  • 重大税务案件审理办法51号令
  • 无锡市高新区税务局张贤平
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设