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.pswp.cn/news/210507.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/210507.shtml
英文地址,請注明出處:http://en.pswp.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、命令字之間以一個或多個下劃線_進行分割…