国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

thinkphp結(jié)合WebSocket 實時推送消息詳細實例

這篇具有很好參考價值的文章主要介紹了thinkphp結(jié)合WebSocket 實時推送消息詳細實例。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

實時推送消息是現(xiàn)代 Web 應用程序中常見的一種需求,而 WebSocket 已成為實時通信的首選技術(shù)。ThinkPHP 提供了對 WebSocket 的支持,本文將演示如何使用 ThinkPHP 實現(xiàn) WebSocket 實時推送消息的詳細例子。

  1. 安裝 Swoole

在開始之前,你需要先安裝 Swoole 擴展??梢允褂靡韵旅顏戆惭b:

pecl install swoole

如果沒有安裝 pecl 工具,可以使用下面的命令:

yum install php-pear -y

然后再次運行 pecl 安裝命令。

  1. 初始化 ThinkPHP 項目

使用 Composer 創(chuàng)建一個空的 PHP 項目:

composer create-project topthink/think tp-websocket

進入項目的根目錄:

cd tp-websocket
  1. 創(chuàng)建 WebSocket 控制器

在 ThinkPHP 中創(chuàng)建 WebSocket 控制器與創(chuàng)建 HTTP 控制器類似,只需要繼承 \think\swoole\WebSocket 類即可。在控制器中,可以定義事件處理程序并處理客戶端發(fā)送的消息。以下是一個簡單的 WebSocket 控制器示例:

<?php
namespace app\index\controller;

use think\swoole\WebSocket;
use Swoole\Http\Request;
use Swoole\WebSocket\Frame;

class Chat extends WebSocket
{
    /**
     * WebSocket 建立連接時對應的事件處理函數(shù)
     * @param Request $request
     */
    public function onOpen(Request $request)
    {
        echo "new client connected\n";
    }
 
    /**
     * WebSocket 接受消息時對應的事件處理函數(shù)
     * @param Frame $frame
     */
    public function onMessage(Frame $frame)
    {
        var_dump($frame->data);
    }
 
    /**
     * WebSocket 斷開連接時對應的事件處理函數(shù)
     * @param Request $request
     */
    public function onClose($fd)
    {
        echo "client {$fd} closed\n";
    }
}

在此示例中,我們定義了三個事件處理程序:

  • onOpen(): 當 WebSocket 連接被建立成功時,會觸發(fā)該事件,我們可以在該事件處理程序中實現(xiàn)一些初始化操作,例如記錄日志、發(fā)送歡迎消息等。
  • onMessage(): 當客戶端發(fā)送消息時,會觸發(fā)該事件,我們可以在該事件處理程序中處理客戶端發(fā)送的消息。
  • onClose(): 當 WebSocket 連接被關(guān)閉時,會觸發(fā)該事件,我們可以在該事件處理程序中釋放資源、記錄日志等。
  1. 配置 WebSocket 服務器

在 ThinkPHP 中,WebSocket 服務器的配置與 HTTP 服務器的配置類似,在應用程序的 config 目錄下創(chuàng)建一個 websocket.php 文件,并添加以下配置:

<?php
return [
    'server' => [
        'host' => '0.0.0.0',
        'port' => 9502,
        'worker_num' => 2,
        'daemonize' => false,
        'pid_file' => runtime_path() . 'swoole.pid',
        'log_file' => runtime_path() . 'swoole.log',
    ],
    'websocket' => [
        'enable' => true,
        'handler' => app\index\controller\Chat::class,
    ],
];

在此示例中,我們定義了以下配置項:

  • host: WebSocket 服務器的監(jiān)聽地址。
  • port: WebSocket 服務器的監(jiān)聽端口。
  • worker_num: 指定 worker 進程數(shù)量。
  • daemonize: 是否以守護進程的方式運行。
  • pid_file: 后臺進程的 PID 文件路徑。
  • log_file: 日志文件路徑。
  • websocket.enable: 是否啟用 WebSocket 服務。
  • websocket.handler: WebSocket 請求處理器的類名。
  1. 啟動 WebSocket 服務器

我們需要在控制臺中啟動 WebSocket 服務器,可以使用以下命令:

php think swoole start

啟動成功后,WebSocket 服務器將在指定的地址和端口上監(jiān)聽客戶端的連接。

  1. 測試 WebSocket 服務

現(xiàn)在,我們可以使用任何支持 WebSocket 的客戶端來測試我們的 WebSocket 服務器。可以使用瀏覽器的開發(fā)者工具或者 Postman 等工具來發(fā)送 WebSocket 消息。

假設(shè)我們的 WebSocket 服務器監(jiān)聽在 9502 端口,我們可以使用以下 JavaScript 代碼在瀏覽器中連接 WebSocket 服務器并發(fā)送消息:

var ws = new WebSocket('ws://localhost:9502');

ws.onopen = function() {
  console.log('WebSocket opened');
  ws.send('Hello, WebSocket!');
}

ws.onmessage = function(event) {
  console.log(`Received message: ${event.data}`);
}

ws.onclose = function() {
  console.log('WebSocket closed');
}

在瀏覽器的控制臺中,你將看到類似以下的輸出:

WebSocket opened
Received message: Hello, WebSocket!

到此,我們已經(jīng)成功實現(xiàn)了一個簡單的 WebSocket 實時推送消息的例子。你可以根據(jù)自己的需求擴展 WebSocket 控制器,并在該控制器中處理 WebSocket 事件。文章來源地址http://www.zghlxwxcb.cn/news/detail-841842.html

到了這里,關(guān)于thinkphp結(jié)合WebSocket 實時推送消息詳細實例的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • SpringBoot集成WebSocket實現(xiàn)消息實時推送(提供Gitee源碼)

    前言:在最近的工作當中,客戶反應需要實時接收消息提醒,這個功能雖然不大,但不過也用到了一些新的技術(shù),于是我這邊寫一個關(guān)于我如何實現(xiàn)這個功能、編寫、測試到部署服務器,歸納到這篇博客中進行總結(jié)。 目錄 一、什么是WebSocket 二、后端實現(xiàn) 2.1、引入pom.xml依賴

    2024年02月11日
    瀏覽(25)
  • Spring Boot進階(48):【實戰(zhàn)教程】SpringBoot集成WebSocket輕松實現(xiàn)實時消息推送

    Spring Boot進階(48):【實戰(zhàn)教程】SpringBoot集成WebSocket輕松實現(xiàn)實時消息推送

    ????????WebSocket是一種新型的通信協(xié)議,它可以在客戶端與服務器端之間實現(xiàn)雙向通信,具有低延遲、高效性等特點,適用于實時通信場景。在SpringBoot應用中,集成WebSocket可以方便地實現(xiàn)實時通信功能,如即時聊天、實時數(shù)據(jù)傳輸?shù)取?????????本文將介紹如何在Sprin

    2024年02月09日
    瀏覽(97)
  • 如果讓你實現(xiàn)實時消息推送你會用什么技術(shù)?輪詢、websocket還是sse

    如果讓你實現(xiàn)實時消息推送你會用什么技術(shù)?輪詢、websocket還是sse

    在日常的開發(fā)中,我們經(jīng)常能碰見服務端需要主動推送給客戶端數(shù)據(jù)的業(yè)務場景,比如_數(shù)據(jù)大屏的實時數(shù)據(jù)_,比如_消息中心的未讀消息_,比如_聊天功能_等等。 本文主要介紹SSE的使用場景和如何使用SSE。 學習就完事了 我們常規(guī)實現(xiàn)這些需求的方案有以下三種 輪詢 websock

    2024年03月19日
    瀏覽(31)
  • uniapp小程序訂閱消息推送+Thinkphp5后端代碼教程示例

    uniapp小程序訂閱消息推送+Thinkphp5后端代碼教程示例

    記錄一下通過uniapp開發(fā)小程序消息推送的實例,配合后端tp推送,之前寫的項目是微信小程序而且后端是原生php,這次通過項目記錄一下 首先我們通過原生php代碼回顧一下,不考慮模板參數(shù)的話,主要就是“ touser ”和“ ACCESS_TOKEN ” 上述代碼大概就是基本流程,我們再看一

    2024年02月08日
    瀏覽(22)
  • WebSocket與消息推送

    WebSocket與消息推送

    B/S結(jié)構(gòu)的軟件項目中有時客戶端需要實時的獲得服務器消息,但默認HTTP協(xié)議只支持請求響應模式,這樣做可以簡化Web服務器,減少服務器的負擔,加快響應速度,因為服務器不需要與客戶端長時間建立一個通信鏈接,但不容易直接完成實時的消息推送功能,如聊天室、后臺信

    2024年02月13日
    瀏覽(21)
  • WebSocket實現(xiàn)前后端消息推送

    WebSocket的代碼編寫會根據(jù)業(yè)務邏輯而進行變化,需要去理解編寫思路,這樣才能在工作中使用得游刃有余。 1. 引入依賴 2.? 編寫WebSocketConfig配置類 3. 編寫WebSocket服務類 下面的服務類中,可以編寫多個sendMeg方法(寫法比較多樣化),作用是發(fā)送消息回前端,使用方式就是你在自

    2024年02月11日
    瀏覽(28)
  • thinkphp websocket 開發(fā)實時聊天系統(tǒng)的用戶群組與訂閱功能實現(xiàn) (一)

    PHP開發(fā)實時聊天系統(tǒng)的用戶群組與訂閱功能實現(xiàn) 在當今社交互聯(lián)網(wǎng)時代,實時聊天系統(tǒng)已經(jīng)成為人們?nèi)粘=涣鞯闹匾ぞ?。為了提供更好的用戶體驗,我們需要實現(xiàn)用戶群組與訂閱功能,使得用戶能夠方便地創(chuàng)建和加入群組,并且能夠訂閱感興趣的內(nèi)容。 本篇文章將介紹如

    2024年02月07日
    瀏覽(22)
  • websocket實時推送統(tǒng)計數(shù)據(jù)給前端頁面

    websocket實時推送統(tǒng)計數(shù)據(jù)給前端頁面

    前提須知:websocket基本使用 業(yè)務場景,每秒推送統(tǒng)計數(shù)據(jù)給前端頁面,分別顯示前天,昨天,今天的前十名客戶數(shù)據(jù) @ServerEndpoint(\\\"/smsMCustomerStaTop10Ws\\\") 定義推送數(shù)據(jù)給到具體的連接標識 以上 onOpen() 方法最終觸發(fā)的業(yè)務方法 smsMonitorService.pushSmsMCustomerStaTop10(); 以上 smsMonitorMapper.findSm

    2024年02月15日
    瀏覽(19)
  • Vue-全局websocket 實現(xiàn)消息推送

    ?在上一篇文章? WebSocket 消息推送 https://blog.csdn.net/qq_63312957/article/details/125375122?spm=1001.2014.3001.5502 ?中已經(jīng)簡單描述了如何使用 springboot? vue websocket 實現(xiàn)數(shù)據(jù)推送,建議先閱讀之前的文章之后,再來閱讀本篇文章。 新建global.js文件 一:main.js 文件中增加 ?二:app.vue中添加

    2024年02月16日
    瀏覽(22)
  • WebSocket+Redis實現(xiàn)消息推送機制以及離線消息推送(vue+sping boot)

    vue端涉及業(yè)務就不貼了 WebSocket 是一種在單個TCP連接上進行全雙工通信的協(xié)議。WebSocket通信協(xié)議于2011年被IETF定為標準RFC 6455,并由RFC7936補充規(guī)范。WebSocket API也被W3C定為標準。 WebSocket使得客戶端和服務器之間的數(shù)據(jù)交換變得更加簡單,允許服務端主動向客戶端推送數(shù)據(jù)。在

    2024年02月09日
    瀏覽(53)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包