我想使用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或chrome,只需在开发工具中打开javascript控制台,你就可以像这样连接到服务器:
ws = new WebSocket('ws://localhost:9000/connect')
ws.onmessage = function( message ) { console.log( message ); };
ws.send('test')
它会向您发回消息,并在您发送消息时将其记录在javascript控制台中。
您也可以使用http://www.websocket.org/echo.htmlecho测试并将您的'ws://localhost:9000/connect'
url提供给它。
您可以使用旧的Socket,但在端口转发(即通过防火墙)方面会遇到问题,也可以使用Websocket客户端库,例如Java中的以下库:http://www.eclipse.org/jetty/documentation/current/jetty-websocket-client-api.html