thinkphp 结合swoole 聊天开发实例

好的,下面我为您介绍使用ThinkPHP和Swoole开发聊天应用的实例。

  1. 环境搭建

首先需要安装PHP和Swoole扩展,可以使用以下命令:

yum install php php-devel php-pear
pecl install swoole

  1. 新建项目

使用composer新建一个ThinkPHP项目:

composer create-project topthink/think chat

  1. 添加Swoole支持

在config/app.php中添加以下代码:

'swoole' => ['enable' => true,'server' => ['host' => '127.0.0.1','port' => 9501,'mode' => SWOOLE_PROCESS,'sock_type' => SWOOLE_SOCK_TCP,],
],

这里配置了一个TCP服务器,监听127.0.0.1:9501端口。

  1. 编写控制器

在app/index/controller目录下创建Chat.php控制器,编写以下代码:

namespace app\index\controller;
use think\swoole\WebSocket;
class Chat extends WebSocket
{public function onMessage($server, $frame){$data = json_decode($frame->data, true);$this->sendToAll($data['msg']);}
}

这里使用WebSocket类,并重写了onMessage方法,接收客户端发送的消息,并通过sendToAll方法将消息广播给所有客户端。

  1. 编写前端页面

在public/static目录下创建chat.html文件,编写以下代码:

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>聊天室</title><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body><div id="message"></div><div><input type="text" id="input"><button onclick="send()">发送</button></div><script>var ws = new WebSocket("ws://127.0.0.1:9501/");ws.onopen = function(){console.log("连接成功");}ws.onmessage = function(event){console.log(event.data);$("#message").append("<p>" + event.data + "</p>");}function send(){var msg = $("#input").val();ws.send(JSON.stringify({msg: msg}));$("#input").val("");}</script>
</body>
</html>

这里使用了WebSocket的API,向服务器发送消息并接收服务器的广播消息。

  1. 运行聊天应用

在命令行中运行以下命令:

php think swoole start

打开浏览器,访问http://localhost/chat.html,即可使用聊天应用。

以上就是使用ThinkPHP和Swoole开发聊天应用的实例,希望对您有帮助。

好的,下面我为您介绍使用ThinkPHP和Swoole开发聊天应用的实例。

  1. 环境搭建

首先需要安装PHP和Swoole扩展,可以使用以下命令:

yum install php php-devel php-pear
pecl install swoole

  1. 新建项目

使用composer新建一个ThinkPHP项目:

composer create-project topthink/think chat

  1. 添加Swoole支持

在config/app.php中添加以下代码:

'swoole' => ['enable' => true,'server' => ['host' => '127.0.0.1','port' => 9501,'mode' => SWOOLE_PROCESS,'sock_type' => SWOOLE_SOCK_TCP,],
],

这里配置了一个TCP服务器,监听127.0.0.1:9501端口。

  1. 编写控制器

在app/index/controller目录下创建Chat.php控制器,编写以下代码:

namespace app\index\controller;
use think\swoole\WebSocket;
class Chat extends WebSocket
{public function onMessage($server, $frame){$data = json_decode($frame->data, true);$this->sendToAll($data['msg']);}
}

这里使用WebSocket类,并重写了onMessage方法,接收客户端发送的消息,并通过sendToAll方法将消息广播给所有客户端。

  1. 编写前端页面

在public/static目录下创建chat.html文件,编写以下代码:

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>聊天室</title><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body><div id="message"></div><div><input type="text" id="input"><button onclick="send()">发送</button></div><script>var ws = new WebSocket("ws://127.0.0.1:9501/");ws.onopen = function(){console.log("连接成功");}ws.onmessage = function(event){console.log(event.data);$("#message").append("<p>" + event.data + "</p>");}function send(){var msg = $("#input").val();ws.send(JSON.stringify({msg: msg}));$("#input").val("");}</script>
</body>
</html>

这里使用了WebSocket的API,向服务器发送消息并接收服务器的广播消息。

  1. 运行聊天应用

在命令行中运行以下命令:

php think swoole start

打开浏览器,访问http://localhost/chat.html,即可使用聊天应用。

以上就是使用ThinkPHP和Swoole开发聊天应用的实例,希望对您有帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/210507.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日一练【三数之和】

一、题目描述 15. 三数之和 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可…

【开题报告】基于SSM的校园体育管预约系统的设计与实现

1.选题背景 随着社会的发展和人们对健康生活的追求&#xff0c;体育锻炼在大学生群体中越来越受到重视。校园体育场馆是大学生进行体育活动和锻炼的主要场所之一。然而&#xff0c;由于校园体育场馆资源有限&#xff0c;管理不善和预约流程繁琐等问题&#xff0c;导致场馆利用…

【数据结构(九)】线索化二叉树(3)

文章目录 1. 前言——问题引出2. 线索二叉树的基本介绍3. 线索二叉树的应用案例3.1. 思路分析3.2. 代码实现 4. 遍历线索化二叉树4.1. 代码实现 1. 前言——问题引出 问题&#xff1a;     将数列 {1, 3, 6, 8, 10, 14 } 构建成一颗二叉树. &#xff08;n17个空指针域&…

1688API接口系列,商品详情数据丨搜索商品列表丨商家订单类丨1688开放平台接口使用方案

1688商品详情接口是指1688平台提供的API接口&#xff0c;用于获取商品详情信息。通过该接口&#xff0c;您可以获取到商品的详细信息&#xff0c;包括商品标题、价格、库存、描述、图片等。 要使用1688商品详情接口&#xff0c;您需要先申请1688的API权限&#xff0c;并获取ac…

老有所依:TSINGSEE青犀养老院智能视频监管方案

养老院智能监控方案是为了提高养老院内老人的安全和护理质量&#xff0c;利用智能技术与监控设备进行全方位的监控和管理&#xff0c;可以加强对老人的监护和护理&#xff0c;提高养老院的服务质量和安全性。 旭帆科技基于视频技术与AI智能分析技术构建的养老院智能视频监控方…

[动态规划]最长公共子序列

题目六 最长公共子序列 题目描述 我们称一个字符的数组S为一个序列。对于另外一个字符数组Z,如果满足以下条件&#xff0c;则称Z是S的一个子序列&#xff1a;&#xff08;1&#xff09;Z中的每个元素都是S中的元素&#xff08;2&#xff09;Z中元素的顺序与在S中的顺序一致。…

22 FlexSPI—读写外部 SPI NorFlash

文章目录 22.1 SPI 协议简介22.1.1 SPI物理层22.1.2 协议22.1.3 CPOL/CPHA 及通讯模式22.1.4 扩展 SPI 协议22.1.5 SDR 和 DDR 模式 22.2 RT1052 的 FlexSPI 特性及架构22.2.1 RT1052 的 FlexSPI 外设简介22.2.2 RT1052 的 FlexSPI 架构剖析22.2.2.1 通讯引脚22.2.2.2 指令查找…

如何将html网页免费转为excel?

一、直接复制。 直接复制是最简单有效、快捷的解决方案&#xff0c;操作方法如下&#xff1a; 1、用鼠标像平常复制文本一样&#xff0c;将整个网页表格选中。 2、点击右键&#xff0c;点击“复制”。 3、打开excel软件&#xff0c;鼠标点击任意单元格。 4、点击右键&#…

Power BI - 5分钟学习拆分列

每天5分钟&#xff0c;今天介绍Power BI拆分列功能。 什么是拆分列&#xff1f; 有时导入Power BI的数据表中&#xff0c;某列内容都包含同样的特殊字符如 /&/-/_等&#xff0c;可以利用这个特殊字符进行拆分列的操作&#xff0c;获得我们想要的信息。 操作举例&#xf…

【从编译器的角度看多态的底层实现原理】

系列文章目录 欢迎读者订阅《计算机底层原理》、《从JVM看Java》系列文章、能够帮助到大家就是对我最大的鼓励&#xff01; 文章目录 目录 系列文章目录 文章目录 前言 一、编译器做了什么&#xff1f; 1.词法分析 2.语法分析 3.语义分析 4.中间代码生成 5.优化 6.目标代码生成…

SugarCRM 任意文件上传漏洞复现(CVE-2023-22952)

0x01 产品简介 SugarCRM是美国SugarCRM公司的一套开源的客户关系管理系统(CRM)。该系统支持对不同的客户需求进行差异化营销、管理和分配销售线索,实现销售代表的信息共享和追踪。 0x02 漏洞概述 SugarCRM index.php接口存在安全漏洞,该漏洞源于安装组件中存在授权绕过和P…

在线人数(oj题)

题目不少于5个字&#xff0c;所以整了个括号凑字数 首先我想到的是用一个数组来记录每一秒的在线人数 但是即使是short类型&#xff08;2字节&#xff09;&#xff0c;也会用到60 * 60 * 24 * 30 * 12 * 60 * 2 / 1024 / 1024 3,559.5703125 MB 而题目上限是256MB&#xff0…

UE小:UE5性能分析

开始录制性能追踪 要开始录制性能追踪&#xff0c;您可以简单地点击界面上的“开始录制”按钮。 查看追踪数据 录制完成后&#xff0c;点击“Trace”菜单中的“UnrealInsights”选项来查看追踪数据。 使用命令行进行追踪 如果点击录制按钮没有反应&#xff0c;您可以通过命令…

【头歌系统数据库实验】实验4 MySQL单表查询

目录 第1关. 在users表中新增一个用户&#xff0c;user_id为2019100904学号&#xff0c;name为2019-物联网-李明 第2关. 在users表中更新用户 user_id为robot_2 的信息&#xff0c;name设为 机器人二号 第3关. 将solution表中所有 problem_id 为1003 题目的解答结果&#xf…

python源码,在线读取传奇列表,并解析为需要的JSON格式

python源码&#xff0c;在线读取传奇列表&#xff0c;并解析为需要的JSON格式 [Server] ; 使用“/”字符分开颜色&#xff0c;也可以不使用颜色&#xff0c;支持以前的旧格式&#xff0c;只有标题和服务器标题支持颜色 ; 标题/颜色代码(0-255)|服务器标题/颜色代码(0-255)|服务…

使用医学数据集MIMIC,常见的问题记录

目录 MIMIC数据库安装及数据导入教程1.postgresql安装第一步&#xff1a;error running考虑到是不是不同的sql的冲突从报错信息出发重启之后可以安装了 2.打开navicate153.7z 不是内部或外部命令&#xff0c;也不是可运行的程序4.在postgreSQL中输入**\i xxx**命令后遇到提示pe…

2023年9月26日 Go生态洞察:深入解析类型参数

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

2023第十二届“认证杯”D题:CMOS黄昏系数|数学中国数学建模国际赛(小美赛)| 建模秘籍文章代码思路大全

铛铛&#xff01;小秘籍来咯&#xff01; 小秘籍希望大家都能轻松建模呀&#xff0c;数维杯也会持续给大家放送思路滴~ 抓紧小秘籍&#xff0c;我们出发吧~ 来看看认证杯&#xff08;D题&#xff09;&#xff01; 完整内容可以在文章末尾领取&#xff01; 问题重述&#x…

【小红书运营指南1】赛道选择 + 账号运营全周期

小红书运营指南1 写在最前面11.23标签一级标签二级标签 网络资源整理1. 赛道选择近2年小红书女性人群画像 2. 基础认知阶段3. 账号启动阶段4. 选题规划阶段5. 爆款打造阶段6. 涨粉变现阶段涨粉变现阶段粉丝发展阶段 写在最前面 最近做的一个项目调研&#xff0c;调研和实际有一…

每日移到算法题 1

借鉴文章&#xff1a;Java-敏感字段加密 - 哔哩哔哩 题目描述 给定一个由多个命令字组成的命令字符串&#xff1b; 1、字符串长度小于等于127字节&#xff0c;只包含大小写字母&#xff0c;数字&#xff0c;下划线和偶数个双引号 2、命令字之间以一个或多个下划线_进行分割…