Akka-http WebSocket如何从MQTT主题连续发送消息

时间:2019-04-15 14:29:49

标签: scala websocket mqtt akka-http

我想创建一个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消息

0 个答案:

没有答案