SpringBoot は EMQX を使用します

1. SpringBootサーバー側

1. Centos 上に EMQX サービスを構築する

2. APIパスワードの作成

3. SpringBoot の yml に mqqt 設定を追加します

#配置
emqx:
  ip: 47.109.49.176
  port: 18083
  api: xxxxxxxx      (自己的api)
  secret: xxxxxxxxx  (自己的secret)

4. サーバーはメッセージを EMQX にプッシュするときに対応する API ID とシークレット権限を必要とするため、最初にクラスを定義し、ConfigurationProperties アノテーションを通じて構成ファイル内のプロパティを取得します

@Data
@Component
@ConfigurationProperties("emqx")
public class EmqConfig {
    private String ip;
    private int port;
    private String api;
    private String secret;
}

5.EMQXツール


@Component
public class EmqApi {
    @Autowired
    private EmqConfig emqConfig;             //EMOX的实体类,可以直接获取配置文件的属性值
    private final String apiVer = "/api/v5"; //使用http实现推送api的版本


    //基础请求地址 http://172.0.0.1:8080/api/v5
    private String getBaeUrl() {
        return "http://" + emqConfig.getIp() + ":" + emqConfig.getPort() + apiVer;
    }


    /*服务端发起请求:
    (1)拼接完成的路径: http://172.0.0.1:8080/api/v5/public (public表示推送一条消息)
    (2)设置请求方式:get、post、delete、put
    (3)设置权限:用户名、密码
    * */
    private HttpRequest getRequest(String url) {
        HttpRequest request = HttpRequest.of(getBaeUrl() + url);
        request.setMethod(Method.POST);
        request.basicAuth(emqConfig.getApi(), emqConfig.getSecret());
        return request;
    }


    /*
    将请求和封装放在一起(已经重载,可以传字符串,也可以传对象)
    * */
    private HttpResponse getResponse(String url, String body) {
        return getRequest(url).body(body).execute();
    }
    private HttpResponse getResponse(String url, Dict dict) {
        return getResponse(url, JSONUtil.toJsonStr(dict));
    }


    /*发送消息的方法 */
    public String publish(String topic, String payload) {
        Dict dict = Dict.create();
        dict.set("topic", topic);     //订阅频道标识
        dict.set("payload", payload); //消息内容
        dict.set("qos", 2);           //消息仅传送一次。不会重复、不会丢失
        HttpResponse response = getResponse("/publish", dict);
        return response.body();
    }
    /*发送消息的方法 */
    public String publish(String topic, Map map) {
        return publish(topic, JSONUtil.toJsonStr(map));
    }
}

 2. フロントエンド uniapp は後で追加されます。

おすすめ

転載: blog.csdn.net/tengyuxin/article/details/132587223