19

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

我从示例中看到的(例如网络聊天或最近在 Scala Days 上的演讲)是 JavaScript/ Coffeescript、html 模板等之间的混合。

我的 Websocket 应用程序的客户端也将是本机移动应用程序(Android、iOS),所以我需要“脱离浏览器”思考。

如何创建一个可以简单地推送“hello”字符串的 websocket 应用程序?

4

2 回答 2

20

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

这是一个非常基本的 websocket 连接示例,取自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)
  }
}

你只需要设置一个指向你的控制器的路由conf/routes

GET /connect  Application.index

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

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

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

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

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

于 2013-07-20T13:22:23.557 回答
2

要么你可以使用一个痛苦的旧 Socket,但你会遇到端口转发问题(即通过防火墙),或者你可以使用 Websocket 客户端库,例如 Java 中的这个:http: //www.eclipse.org/jetty /documentation/current/jetty-websocket-client-api.html

于 2013-07-20T13:44:14.547 回答