scala/akka/play中的简单Websocket

tic*_*fab 19 scala websocket akka playframework-2.1

我想使用Scala/Akka/Play创建一个简单的Websocket应用程序.

我从示例中看到的内容(例如网络聊天Scala Days最近的演讲)是JavaScript/Coffeescript,html模板等的混合体.

我的Websocket应用程序的客户端也将是原生移动应用程序(Android,iOS),所以我需要考虑"浏览器外".

如何创建一个只能推送"hello"字符串的websocket应用程序?

mor*_*mor 20

WebSocket连接有两部分:服务器和客户端.您可以使用Play2制作服务器部分并使用Android实现客户端(请参阅websocket-android-phonegap),iOS(请参阅Unitt),javascript应用...

以下是来自http://blog.tksfz.org/2012/10/12/websockets-echo-using-play-scala-and-actors-part-i/非常基本的websocket连接的示例:

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)
  }
}
Run Code Online (Sandbox Code Playgroud)

您只需设置指向控制器的路线conf/routes:

GET /connect  Application.index
Run Code Online (Sandbox Code Playgroud)

服务器已准备好运行.然后,您可以使用javascript应用程序,Android应用程序等连接到WebSocket ......客户端是另一回事.

如果您使用chrome或chromium,只需在开发人员工具中打开您的javascript控制台,就可以像这样连接到您的服务器:

ws = new WebSocket('ws://localhost:9000/connect')
ws.onmessage = function( message ) { console.log( message ); };
ws.send('test')
Run Code Online (Sandbox Code Playgroud)

它会将您的消息发回给您,并在您发送消息时将其记录在javascript控制台中.

您也可以使用http://www.websocket.org/echo.html echo测试并将其提供给您的'ws://localhost:9000/connect'网址.

  • "Enumerator.imperative"似乎已被弃用或从最新版本的Play中删除,这是一个较新版本的echo应用程序:http://blog.controlgroup.com/2013/10/17/simple-websockets-example-play -2-2-0 /希望这可以帮助别人...... (8认同)