Websocket simple en scala/akka/play
playframework-2.1 (2)
Hay dos partes en una conexión WebSocket: el servidor y el cliente. Simplemente puede hacer que el servidor utilice Play2 e implementar un cliente con Android (ver websocket-android-phonegap ), iOS (ver Unitt ), aplicación javascript ...
Este es un ejemplo de una conexión de websocket muy básica tomada de http://blog.tksfz.org/2012/10/12/websockets-echo-using-play-scala-and-actors-part-i/ :
package controllers
import play.api.mvc._
object Application extends Controller {
def index = WebSocket.using[String] {
val out = Enumerator.imperative[String]()
val in = Iteratee.foreach[String] {
msg =>
out.push(msg)
}
(in, out)
}
}
Solo tiene que configurar una ruta que apunte a su controlador conf/routes
route:
GET /connect Application.index
El servidor está listo para ejecutarse. Luego puede conectarse a su WebSocket con una aplicación javascript, una aplicación de Android, etc. El lado del cliente es otro asunto.
Si usa Chrome o Chrome, simplemente abra su consola de javascript en las herramientas de desarrollo y podrá conectarse a su servidor de la siguiente manera:
ws = new WebSocket(''ws://localhost:9000/connect'')
ws.onmessage = function( message ) { console.log( message ); };
ws.send(''test'')
Le enviará de vuelta su mensaje y lo registrará en la consola de javascript cada vez que envíe uno.
También puede utilizar la prueba de eco http://www.websocket.org/echo.html y alimentarla con su URL ''ws://localhost:9000/connect''
.
Me gustaría crear una aplicación Websocket simple usando Scala / Akka / Play.
Lo que veo en los ejemplos (como el webchat o la reciente charla en los Días de Scala ) es una combinación de JavaScript / Coffeescript, plantillas html, etc.
Los clientes de mi aplicación Websocket también serán aplicaciones móviles nativas (Android, iOS), así que tengo que pensar "fuera del navegador".
¿Cómo puedo crear una aplicación websocket que pueda simplemente empujar una cadena de "hola"?
Puede usar un Socket antiguo, pero tendrá problemas con el reenvío de puertos (es decir, a través de firewalls) o puede usar la biblioteca cliente Websocket, como esta en Java: http://www.eclipse.org/jetty/documentation/current/jetty-websocket-client-api.html