Mi dispiace se questa è una domanda stupida, ma onestamente non riesco a capirlo senza impostare una sorta di codice ASCII -> mappatore di caratteri me stesso, che non penso sia il modo giusto per farlo.Come convertire Akka ByteString in String?
Attualmente sto creando una "applicazione di chat" con Scala e Akka in cui utilizzo un'entità client e server separata. Il client si connette al server, invia un messaggio e il server fa qualcosa con esso.
Ho ricevuto l'invio di un messaggio funzionante, ma ora sono bloccato a leggere il messaggio sul lato server. Ogni volta che ricevo un messaggio ottengo un ByteString contenente i valori ASCII dei caratteri del messaggio. Come posso convertire questo ByteString in una stringa effettiva?
relativo codice (lato server):
package chatapp.server
import java.net.InetSocketAddress
import akka.actor.{Actor, ActorSystem}
import akka.io.Tcp._
import akka.io.{IO, Tcp}
/**
* Created by Niels Bokmans on 30-3-2016.
*/
class ServerActor(actorSystem: ActorSystem) extends Actor {
val Port = 18573
val Server = "localhost"
IO(Tcp)(actorSystem) ! Bind(self, new InetSocketAddress("localhost", Port))
def receive: Receive = {
case CommandFailed(_: Bind) =>
println("Failed to start listening on " + Server + ":" + Port)
context stop self
actorSystem.terminate()
case Bound(localAddress: InetSocketAddress) =>
println("Started listening on " + localAddress)
case Connected(remote, local) =>
println("New connection!")
sender ! Register(self)
case Received(data) =>
println(data)
}
}
Immagine di Server (come si può vedere che accetta connessioni -> riceve una nuova connessione -> riceve un messaggio dalla connessione):
Immagine di cliente (si connette al server e quindi invia il messaggio "testmessage")
Si noti che questo non si butta sulle sequenze di byte non validi per la codifica specificata. Ad esempio, 'ByteString (192) .decodeString (ByteString.UTF_8)' –