tutorial latest scala akka

scala - latest - ¿Cómo convertir Akka ByteString en String?



akka tutorial (2)

Puedes usar el método decodeString así:

scala> val x = ByteString("abcd") x: akka.util.ByteString = ByteString(97, 98, 99, 100) scala> x.decodeString("US-ASCII") res0: String = abcd

Lo siento si esta es una pregunta estúpida, pero honestamente no puedo resolverlo sin configurar algún tipo de código ASCII -> mapeador de caracteres, lo cual no creo que sea la forma correcta de hacerlo.

Así que actualmente estoy haciendo una "aplicación de chat" con Scala y Akka, donde uso una entidad de servidor y cliente separada. El cliente se conecta al servidor, envía un mensaje y el servidor hace algo con él.

Obtuve el envío de un mensaje de trabajo, pero ahora estoy atascado en leer el lado del servidor de mensajes. Cada vez que recibo un mensaje, obtengo una ByteString que contiene los valores ASCII de los caracteres del mensaje. ¿Cómo convierto este ByteString en una cadena real?

Código relevante (lado del servidor):

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) } }

Imagen del servidor (como puede ver, acepta conexiones -> recibe una nueva conexión -> recibe un mensaje de la conexión):

Imagen del cliente (se conecta al servidor y luego envía el mensaje "mensaje de prueba")