位置: 编程技术 - 正文

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

  • 金融资产的构成
  • 主营业务成本借方表示什么意思
  • 航空公司开具的个人抬头的发票可以税前扣除吗
  • 房地产企业售楼降价法律条文
  • 中小企业现金流量表
  • 外地建筑工程开票流程
  • 普通发票开折扣销售能冲减销售吗
  • 长期挂账应收账款怎么调
  • 营改增后哪些费用可以抵扣
  • 抵债资产计提折旧怎么算
  • 收款未发货需要纳税吗
  • 冲减利润怎么做账
  • 用金税盘怎样认证抵扣
  • 增值税17%和13%有什么区别
  • 劳务派遣企业差额扣除占比过高怎么办
  • 事业单位事业收入和经营收入要上缴财政
  • 农产品加计扣除政策2023最新
  • 公司发手机奖励合法吗
  • 变动成本率的计算公式字母
  • 建设银行对公转账限额
  • 查补的增值税如何申报
  • 企业购买固定资产要交印花税吗
  • 其他应付款包括应付职工薪酬吗
  • 无法设置面容id怎么办
  • 红字专用发票信息表
  • onekey.exe是什么
  • 个人出差借款会计分录
  • 水养绿萝怎么养护长得才茂盛
  • postman如何设置token
  • element-ui dialog
  • php从数据库中读取数据
  • 捆绑销售如何进行账务处理?
  • 女方结婚申请
  • 销售费用可以开专票吗
  • seaborn库的特点
  • 全网最详细的李白解说来了
  • chatGPT之Python API启用上下文管理
  • dpkg -s命令
  • 房租税务局代增值税发票 税点
  • 帝国cms简介标签
  • 增值税发票上多了一个点能刮掉吗
  • ubuntu下编译安装opencv
  • mongodb迁移
  • sqlserver存储过程声明变量
  • 海洋cms有安卓版下载
  • 税务异常有哪些影响
  • 土地增值税预缴计税依据
  • 商品流通企业的含义
  • 进项税额不得从销项税额中抵扣是什么意思
  • 工程施工二级设哪些明细
  • 收到银行开具的利息发票怎么做账
  • 小规模纳税人的认定标准是什么
  • 试分析营改增的重大意义
  • 记账凭证是不是转账凭证
  • 银行受理汇票贴现业务
  • 企业利润分为四个方面
  • 冲减以前年度未开票收入开票如何申报小规模纳税人
  • mysql5.7免安装版
  • sqlserver 触发器 if 后边没执行
  • windowsxp教程
  • 三星笔记本预装win8改win7好吗
  • 本地磁盘安装
  • ubuntu 04 10
  • The file /boot/grub/stage1 not read cor 解决办法
  • win10链接手机怎么用
  • 怎么改电脑windows7
  • win8如何关闭杀毒软件
  • win8声音小怎么解决
  • unity3d documentation
  • [置顶]bilinovel
  • js下拉列表框
  • jquery attr和prop
  • 安卓端测试
  • 小规模纳税人税率2024
  • 贵阳税务官网登录
  • 航天信息服务费300元
  • 进项税留抵怎么消化掉
  • 国税上海税务局官网
  • 税审工作流程
  • 财税〔2009〕61号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设