mqtt를 사용하는 thinkphp 정보

藏色散人
풀어 주다: 2020-12-24 15:14:39
앞으로
5808명이 탐색했습니다.

다음은 thinkphpframework 튜토리얼 칼럼에서 mqtt를 이용한 thinkphp에 대한 소개입니다. 필요한 친구들에게 도움이 되었으면 좋겠습니다!

최근에 mqtt를 사용하여 프로젝트를 진행하고 있었는데 인터넷에서 많은 예제를 보았지만 잘 이해하지 못했습니다(아마 제가 멍청해서 그런 것 같습니다). 나중에 잊어버리지 않도록 해결해서 여기에 기록했습니다. . 제가 능숙하지 않아서 몇개 봤는데 혹시 실수가 있으면 메시지를 남겨서 조언을 주시면 됩니다

첫 번째 준비는 환경과 프레임워크를 사용하는 것인데 거의 비슷합니다. 동일

환경 contOs7을 사용하고 있으며 모기 환경에서 사용하는 mqtt를 설치했습니다. 설치 튜토리얼은 여기 있습니다. (설정은 꼭 기억해주세요.) 비밀번호, 권한이 아직 이루어지지 않아 이 글은 작성되지 않았습니다.

Framework 저는 TP5.0 프레임워크를 사용하고 있습니다

다음 단계는 개발 과정입니다

1 MQTT 클래스를 다운받아서 프로젝트 폴더의 루트 디렉토리에 extend 로 넣어두는데, 원래는 csdn 리소스에 넣어서 그렇게 하려고 했습니다. 누구나 열심히 일하면 1점을 얻을 수 있습니다. 의외로 기본값은 5포인트입니다. Git에 가기가 너무 귀찮고 포인트가 너무 많으면 리소스 주소를 클릭하고 모든 사람에게 Git 주소를 제공하세요. https://github.com/bluerhinos /phpMQTT,

2 그런 다음 MQtt 클래스를 소개합니다.

다음은 MQTT 정보 Qos 수준과 관련하여 관심이 있는 경우

<?php
namespace app\index\model;
use Bluerhinos\phpMQTT;
use think\Model;
class Mqtt extends Model
{
    /**
     * MQTT发送信息
     * @param $id   发布消息的ID 订阅ID需要与发布ID一致才能接受信息 topic为发布给全部
     * @param $info 发布的信息
     */
    public function pus($id,$info){
        //使用require_once 引入 MQTT 的类
        require_once (EXTEND_PATH.&#39;/phpMQTT-master/phpMQTT.php&#39;);
        $host = "";     // change if necessary   IP
        $port = 1883;                     // change if necessary    端口默认1883
        $username = "";                   // set your username 用户名
        $password = "";                   // set your password 密码
        $message = $info; //要发送的消息
        //phpMQTT有四个参数:主机,端口,客户端id,证书。官网这里的案例没写证书,请参考phpMQT类
        //没有证书的时候只能连接1883端口,不能连接8883端口。
        //第三个参数为客户端ID 不可重复
        $mqtt = new phpMQTT($host, $port, "ClientID" . rand());
        //连接
        if ($mqtt->connect(true, NULL, $username, $password)) {

            //发送信息  第三个参数为Qos服务质量等级
            //Qos0   发送者只发送一次消息,不进行重试,Broker不会返回确认消息。在Qos0情况下,Broker可能没有接受到消息
            //Qos1   发送者最少发送一次消息,确保消息到达Broker,Broker需要返回确认消息PUBACK。在Qos1情况下,Broker可能接受到重复消息
            //Qos2   Qos2使用两阶段确认来保证消息的不丢失和不重复。在Qos2情况下,Broker肯定会收到消息,且只收到一次
            $mqtt->publish($id, $message, 0);
            $mqtt->close(); //关闭
        } else {
            echo "Fail or time out<br />";
        }
    }

    /**

     * 要使用命令行运行此方法!!!   

     *  think5.0 运行方法为 cd到Public 目录  然后  php index.php 模块/控制器/方法

     * 该类主要为订阅,建议订阅代码和发布代码不要写在同一个类中,避免修改造成不必要的误改。
     * 每次更新该类后需要重启mqtt订阅,否则新的改动不会生效。
     * 请在相应的位置放入phpMQTT的库
     * 库代码:https://github.com/bluerhinos/phpMQTT/blob/master/phpMQTT.php
     * 类库使用的时候注意命名空间,类名称命名要和thinkphp的保持一致,不然会报错
     */
    public function sub(){
        require_once (EXTEND_PATH.&#39;/phpMQTT-master/phpMQTT.php&#39;);
        $server = "";     // change if necessary 服务器IP
        $port = 1883;                     // change if necessary    端口 一般是1883
        $username = "";                   // set your username mosquitto设置的用户名
        $password = "";                   // set your password mosquitto设置的密码
        $client_id = "clientx9293670xxctr".rand(1213333123,123123333); //你的连接客户端id

        $mqtt = new phpMQTT($server, $port, $client_id);    //进行连接

        if(!$mqtt->connect(true, NULL, $username, $password)) {
            exit(&#39;error&#39;);   //连接失败
        } else {
            echo "success"; //连接成功
        }
        //topics["topic"]  为接受的主题名  需要和发送的主题名一致  否则会订阅不到
        //订阅信息 Qos为信息登记,需要和发送的等级一致
        $topics["topic"] = array("qos" => 0, "function" =>array($this,"onMessage"));

        $mqtt->subscribe($topics, 0);

        //死循环监听
        while($mqtt->proc()){

        }
        $mqtt->close();
    }
    /**
     * 在此处接MQtt的信息 进行业务处理
     * @param $topic
     * @param $msg
     */
    function onMessage($topic,$msg){
    	$msg = json_decode($msg,true);
        //我把数据传递到了另一个方法进行处理  可以在处理完逻辑业务之后 再次调用发布方法  去给订阅方发布消息
        $this->index($msg);   
    }
}
로그인 후 복사

명령으로 실행하는 것을 기억하세요. thinkphp 실행 예시의 경우 먼저 프로젝트의 public 디렉터리로 이동한 다음 php index.php module/controller/method

을 실행하고 실행 후 성공을 반환합니다. mqtt.fx를 사용하시면 됩니다.소프트웨어 주소는 http://www.jensd.de/apps/mqttfx/입니다. 제가 사용하는 것은 1.7.1 입니다. 클릭하시면 아래 윈도우 링크가 있는데 클릭하시면 다운로드가 됩니다. 사용하려면

구성 및 사용하세요
. 소프트웨어를 열면 인터페이스는 아래와 같습니다

mqtt를 사용하는 thinkphp 정보

그런 다음 연결 편집

mqtt를 사용하는 thinkphp 정보

을 선택하고 해당 프로필 이름, 브로커 주소 및 브로커 포트(수정 시 기본값은 1883), 생성 버튼을 클릭하면 클라이언트 ID가 자동 생성됩니다. 편집 후 저장을 클릭하여 편집 인터페이스를 종료합니다.

mqtt를 사용하는 thinkphp 정보

그런 다음 기본 인터페이스의 드롭다운 상자로 이동하여 방금 구성한 프로필 이름(172.16.0.121)을 선택한 다음 연결 버튼을 클릭하여 서비스에 연결합니다. 연결에 성공하면 구독 옵션을 클릭하고 아래 드롭다운 상자에서 주제를 선택한 다음(또는 i like mqtt와 같이 직접 주제를 생성) 구독 버튼을 클릭하세요.

mqtt를 사용하는 thinkphp 정보

게시 옵션으로 돌아가서 드롭다운 상자에서 주제를 선택하세요(또는 구독 옵션에서와 동일한 주제를 만드세요). 이제 아래 입력 영역에 보내려는 메시지를 작성할 수 있습니다(예: wo ai mqtt, 중국어는 구독자의 메시지 표시에서 왜곡됩니다). 여기 메시지는 여러 형식을 지원하고 게시 버튼을 클릭합니다.

mqtt를 사용하는 thinkphp 정보

마지막으로 구독 옵션으로 돌아가서 메시지가 성공적으로 수신되었는지 확인하세요. 그림과 같이 게시자(wo ai mqtt)가 보낸 메시지가 성공적으로 수신되었습니다.

mqtt를 사용하는 thinkphp 정보

해당 메시지 디코더를 선택할 수도 있습니다(텍스트 형식, JSON 형식, Base64 인코딩, 16진수 인코딩, Sparkplug 인코딩)

위 내용은 mqtt를 사용하는 thinkphp 정보의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿