我想创建一个WebSocket服务器,等待客户端的MQTT主题,并向客户端连续发送主题消息。这是我在Scala中所做的
def echoService(): Flow[Message, Message, _] = Flow[Message].map{
case TextMessage.Strict(txt) =>
val temp = password.split("/")
if (temp.nonEmpty && temp.length < 4) {
val res = new ListBuffer[String]
val persistence = new MemoryPersistence
val client = new MqttClient(url, MqttClient.generateClientId(), persistence)
val MQtt_Option: MqttConnectOptions = new MqttConnectOptions
MQtt_Option.setCleanSession(true)
MQtt_Option.setUserName(userName)
MQtt_Option.setPassword(password.toCharArray)
client.connect(MQtt_Option)
client.subscribe(txt)
client.setCallback(
new MqttCallback() {
override def connectionLost(cause: Throwable): Unit = {
}
@throws[Exception]
override def messageArrived(topic: String, message: MqttMessage): Unit = {
TextMessage(message.getPayload.toString)
}
override def deliveryComplete(token: IMqttDeliveryToken): Unit = {
}
})
}
TextMessage("wrong request!")
}
val websocketRoute = get {
handleWebSocketMessages(echoService())
}
Http().bindAndHandle(websocketRoute, "127.0.0.1", 8080)
Await.result(system.whenTerminated, Duration.Inf)
在上面的代码中,逻辑是我为每个WebSocket客户端请求创建一个MQTT连接。它将侦听该主题,并将MQTT消息连续发送到WebSocket客户端。 但是向服务器请求时,我只会收到一条错误请求!消息!如何修改它以连续发送MQTT消息