我想使用 Scala / Akka / Play 创建一个简单的 Websocket 应用程序。
我从示例中看到的(例如网络聊天或最近在 Scala Days 上的演讲)是 JavaScript/ Coffeescript、html 模板等之间的混合。
我的 Websocket 应用程序的客户端也将是本机移动应用程序(Android、iOS),所以我需要“脱离浏览器”思考。
如何创建一个可以简单地推送“hello”字符串的 websocket 应用程序?
我想使用 Scala / Akka / Play 创建一个简单的 Websocket 应用程序。
我从示例中看到的(例如网络聊天或最近在 Scala Days 上的演讲)是 JavaScript/ Coffeescript、html 模板等之间的混合。
我的 Websocket 应用程序的客户端也将是本机移动应用程序(Android、iOS),所以我需要“脱离浏览器”思考。
如何创建一个可以简单地推送“hello”字符串的 websocket 应用程序?
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。
要么你可以使用一个痛苦的旧 Socket,但你会遇到端口转发问题(即通过防火墙),或者你可以使用 Websocket 客户端库,例如 Java 中的这个:http: //www.eclipse.org/jetty /documentation/current/jetty-websocket-client-api.html