位置: 编程技术 - 正文

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

  • 增值税纳税申报表模板
  • 独立法人和法人独资的区别
  • 小微企业做什么
  • 什么是非限制
  • 公司车辆卖给个人怎么处理账务
  • 现金日记账本月合计的红线画法
  • 低于5000是什么意思
  • 个体户增值税按开票额来申报吗
  • 发放代扣代缴个人所得税分录
  • 短期借款可以按币种设置明细核算
  • 购买产品没开发票支付宝支付
  • 个体工商户怎么注销
  • 员工出差住宿费计入什么科目
  • 增值税专票销货清单模板
  • 然后销售产品
  • 印花税法律制度规定不征收印花税的是什么
  • 建筑企业收到的商品怎么入账呢
  • 无形资产软件摊销年限是多少
  • 公司账上亏损
  • 其他权益工具投资公允价值变动怎么计算
  • 认筹金客户经常提出哪些问题
  • PHP:oci_internal_debug()的用法_Oracle函数
  • wamp搭建网站教程
  • php如何实现多进程
  • 图像类别
  • 结转本年利润的分录怎么写
  • 厂房出租租金要交多少税
  • 企业收入的具体表现
  • 酒店装修费用如何抵扣税
  • 折扣额在备注栏
  • 德比郡在哪
  • php lcg_value与mt_rand生成0~1随机小数的效果对比分析
  • Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
  • 控制系统动力学
  • PHP面向对象程序设计
  • 工伤死亡 赔偿
  • 中兴网管操作手册
  • 银行存放中央银行准备金的会计处理
  • js构造函数怎么用
  • 辞退补偿金计算
  • powerdesigner12.5使用教程
  • 固定资产是价税合计吗
  • 水运企业会计核算办法
  • 购买铝材会计分录
  • 资产类账户有哪些
  • 经营范围没有的项目可以做吗
  • 期末增值税结转后未交增值税有余额,对吗
  • 转让股权溢价账务处理会计分录
  • 股东所有者权益负数
  • 城建税教育费附加和地方教育费附加
  • 打样费入什么科目
  • 固定资产原值会减少吗
  • 民非企业怎么给员工交五险
  • 企业名称变更后税务变更需要什么资料
  • 管家婆里面的记账凭证怎么做?
  • 关于mysql中的字符型数据下面说法正确的是
  • windows组合快捷键
  • 电脑win7怎么样
  • 有没有软件恢复
  • 手把手教您安装软件
  • 生产运维管理
  • win7集成补丁教程
  • 个人pc用户免费下载软件
  • javascript 语言精粹(修订版)
  • cocos2d-x安装
  • android项目总结
  • Lesson01_01 HTML基础
  • 可序列化的类被标记为
  • js格式化输出
  • thread python
  • jquery正则表达式的用法
  • node.js中使用文件流进行文件复制,首先需要创建一个
  • 深入解析windows第7版pdf
  • 使用jquery实现的项目
  • jQuery+ajax实现实用的点赞插件代码
  • AndroidStudio中aar文件引用
  • 第十三个人
  • 房子有注册公司可以卖吗
  • 一般纳税人企业所得税怎么征收
  • 实收资本印花税税率多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设