一、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标识和secret权限, 就先定义一个类,通过ConfigurationProperties注解获取配置文件中的属性。文章来源:https://www.toymoban.com/news/detail-685605.html
@Data
@Component
@ConfigurationProperties("emqx")
public class EmqConfig {
private String ip;
private int port;
private String api;
private String secret;
}
5. EMQX工具类文章来源地址https://www.toymoban.com/news/detail-685605.html
@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));
}
}
二、前端uniapp 后面补
到了这里,关于SpringBoot 使用 EMQX的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!