>백엔드 개발 >PHP 튜토리얼 >PHP 및 MQTT를 사용하여 웹사이트에 실시간 알림 기능을 추가하는 방법

PHP 및 MQTT를 사용하여 웹사이트에 실시간 알림 기능을 추가하는 방법

王林
王林원래의
2023-07-08 20:43:441539검색

PHP 및 MQTT를 사용하여 웹 사이트에 실시간 알림 기능을 추가하는 방법

웹 애플리케이션용 실시간 알림 기능은 최신 웹 사이트에서 점점 더 인기를 얻고 있습니다. 실시간 알림은 라이브 채팅, 실시간 댓글, 새 메시지 알림 등 다양한 용도로 사용될 수 있습니다. 이 기사에서는 PHP 및 MQTT 프로토콜을 사용하여 웹사이트에 실시간 알림 기능을 추가하는 방법을 설명합니다.

MQTT 프로토콜이란 무엇인가요?

MQTT(Message Queuing Telemetry Transport)는 효율적인 인스턴트 통신을 제공하도록 설계된 경량 메시지 전송 프로토콜입니다. 대역폭이 낮고 불안정한 네트워크 환경을 위해 설계되었으며, IoT 애플리케이션을 위한 메시지 전송에 매우 적합합니다.

MQTT 프로토콜은 게시/구독 모델을 기반으로 합니다. 클라이언트는 특정 주제(토픽)를 구독할 수 있습니다. 해당 주제에 새 메시지가 게시되면 구독자는 실시간으로 알림을 받게 됩니다.

준비

시작하기 전에 다음 조건이 충족되는지 확인해야 합니다.

  1. Mosquitto와 같은 MQTT 브로커를 실행하는 서버.
  2. Mosquitto MQTT 확장 설치를 포함한 PHP 개발 환경.

Mosquitto MQTT 확장 프로그램을 설치하면 pecl 명령을 사용할 수 있습니다.

pecl install Mosquitto-alpha

실시간 알림 기능 구현

이 예에서는 사용자가 다른 사람이 보낸 메시지를 보내고 받을 수 있는 간단한 채팅 애플리케이션을 만듭니다. 실시간으로 사용자. 우리는 이 기능을 구현하기 위해 PHP와 MQTT를 사용할 것입니다.

먼저 MQTT 클라이언트를 생성하고, MQTT 브로커와 연결을 설정하고, 주제를 구독해야 합니다. phpMQTT 라이브러리를 사용하여 MQTT 클라이언트 구현을 단순화하겠습니다. phpMQTT 라이브러리는 다음 코드를 통해 설치할 수 있습니다.

composer require bluerhinos/phpmqtt

그런 다음 chat.php라는 파일을 만들고 다음 코드를 추가합니다. chat.php的文件,并添加以下代码:

<?php
require("phpMQTT.php");

$mqtt = new phpMQTT("localhost", 1883, "clientId_" . uniqid());
if ($mqtt->connect()) {
    $mqtt->subscribe("chat_room", 0);
    while ($mqtt->proc()) {
    }
    $mqtt->close();
} else {
    echo "连接MQTT代理失败";
}

在上述代码中,我们首先创建了一个mqtt实例,并使用localhost1883作为MQTT代理的主机和端口。然后,我们通过$mqtt->connect()方法建立与MQTT代理的连接。如果连接成功,则使用$mqtt->subscribe("chat_room", 0)订阅一个名为chat_room的主题。最后,我们使用$mqtt->proc()方法来保持与MQTT代理的连接。

接下来,我们创建一个名为index.html的前端文件,并添加以下代码:

<!DOCTYPE html>
<html>
<head>
    <title>实时聊天</title>
    <meta charset="utf-8">
    <style>
        #chat_log {
            height: 300px;
            overflow-y: scroll;
        }
    </style>
</head>
<body>
    <h1>实时聊天</h1>
    <div id="chat_log"></div>
    <input type="text" id="message" placeholder="请输入消息">
    <button id="send_button">发送</button>
  
    <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
    <script>
        var clientId = 'web_' + new Date().getTime();
        var mqtt = new Paho.MQTT.Client("localhost", 1883, clientId);
        var topic = "chat_room";
      
        mqtt.onConnectionLost = function(responseObject) {
            console.log('连接丢失');
        };
      
        mqtt.onMessageArrived = function(message) {
            var msg = message.payloadString;
            $("#chat_log").append('<p>' + msg + '</p>');
        };
      
        mqtt.connect({
            onSuccess: function() {
                mqtt.subscribe(topic);
            }
        });
      
        $(document).ready(function() {
            $("#send_button").click(function() {
                var message = $("#message").val();
                mqtt.send(topic, message);
                $("#message").val('');
            });
        });
    </script>
</body>
</html>

在上述代码中,我们首先在mqtt.onConnectionLost方法中处理与MQTT代理的连接丢失事件。在mqtt.onMessageArrived方法中,我们接收到新消息时向聊天记录中添加该消息。

通过调用mqtt.connect()方法并提供一个回调函数,在连接成功后订阅chat_room主题。然后,我们使用jQuery在页面加载时通过$("#send_button").click方法来实现发送消息功能。

最后,我们在浏览器中打开index.htmlrrreee

위 코드에서는 먼저 mqtt를 만듭니다. 인스턴스를 만들고 localhost1883을 MQTT 브로커의 호스트 및 포트로 사용합니다. 그런 다음 $mqtt->connect() 메서드를 통해 MQTT 브로커와의 연결을 설정합니다. 연결에 성공하면 $mqtt->subscribe("chat_room", 0)를 사용하여 chat_room이라는 주제를 구독하세요. 마지막으로 $mqtt->proc() 메서드를 사용하여 MQTT 브로커에 대한 연결을 유지합니다.

다음으로 index.html이라는 프런트 엔드 파일을 만들고 다음 코드를 추가합니다.

rrreee

위 코드에서는 먼저 mqtt.onConnectionLost 이 메서드는 MQTT 브로커와의 연결 손실 이벤트를 처리합니다. <code>mqtt.onMessageArrived 메소드에서 새 메시지를 받으면 이를 채팅 기록에 추가합니다. 🎜🎜 mqtt.connect() 메소드를 호출하고 콜백 함수를 제공하여 연결에 성공한 후 chat_room 주제를 구독하세요. 그런 다음 jQuery를 사용하여 페이지가 로드될 때 $("#send_button").click 메서드를 통해 메시지 전송 기능을 구현합니다. 🎜🎜마지막으로 브라우저에서 index.html 파일을 열면 채팅 인터페이스를 볼 수 있습니다. 🎜🎜요약🎜🎜이 문서에서는 PHP 및 MQTT 프로토콜을 사용하여 웹사이트에 실시간 알림 기능을 추가하는 방법을 설명합니다. 우리는 사용자가 실시간으로 다른 사용자로부터 메시지를 보내고 받을 수 있는 phpMQTT 라이브러리를 사용하여 간단한 채팅 애플리케이션을 만들었습니다. 이 예를 통해 MQTT 프로토콜을 사용하여 현대 웹사이트의 요구 사항을 충족하는 효율적인 인스턴트 통신을 달성하는 방법을 확인할 수 있습니다. 🎜

위 내용은 PHP 및 MQTT를 사용하여 웹사이트에 실시간 알림 기능을 추가하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.