1.需求
今天有一个需求,需要都客户的Mqtt服务那到定位的消息,然后解析GNRMC类型的消息之后。实时发送到前端伙伴那里。就想到了用web socket来实现。看代码
2.引入的依赖
<!-- hutool-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.16</version> <!-- 使用最新的版本号 -->
</dependency>
<!-- mqtt-->
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-mqtt</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.2.0</version>
</dependency>
3.WebSocket的配置类
@Configuration
public class WebSocketConfiguration {
@Bean
public ServerEndpointExporter endpointExporter() {
return new ServerEndpointExporter();
}
/**
* 把websocket类中需要的注入bean 在此地方注入。
*
* @param spider
*/
@Autowired
public void setSpider(Spider spider) {
WebSocketEditorServer.spider = spider;
}
/**
* 需要的配置文件的配置信息
*
* @param mqttConfig
*/
@Autowired
public void setMqttConfig(MqttConfig mqttConfig) {
WebSocketEditorServer2.mqttConfig = mqttConfig;
}
/**
* 一些数据库的Mqpper类
* @param messageMapper
*/
@Autowired
public void setMessageMapper(MessageMapper messageMapper) {
WebSocketEditorServer2.messageMapper = messageMapper;
}
@Autowired
public void setMachineMapper(MachineMapper machineMapper) {
WebSocketEditorServer2.machineMapper = machineMapper;
}
}
@Data
@Configuration
@ConfigurationProperties(prefix = "mqtt")
public class MqttConfig {
private String url;
private String clientId;
private String username;
private String password;
private String topic;
}
4.以启动线程的方式,启动mqtt连接器,来接受消息
class MessageBody implements Runnable {
private String brokerUrl;//mqtt地址
private String clientId;//
private String username;//mqtt 账号
private String password;//密码
private String topic;//监听的topic
privat