如何使用Play Framework在Scala中使用WebSocket?
我想在Scala和Play框架中使用WebSocket。但我无法让这个例子起作用 我应该为如何使用Play Framework在Scala中使用WebSocket?,scala,playframework,websocket,import,Scala,Playframework,Websocket,Import,我想在Scala和Play框架中使用WebSocket。但我无法让这个例子起作用 我应该为await()和disconnect()导入什么 我得到的错误是引发的错误是:找不到:值等待。我使用了下面的代码: package controllers import play._ import play.mvc._ import play.mvc.Http.WebSocketEvent import play.mvc.Http.WebSocketFrame import play.mvc.Http.We
await()
和disconnect()
导入什么
我得到的错误是引发的错误是:找不到:值等待
。我使用了下面的代码:
package controllers
import play._
import play.mvc._
import play.mvc.Http.WebSocketEvent
import play.mvc.Http.WebSocketFrame
import play.mvc.Http.WebSocketClose
import play.mvc.WebSocketController
object MySocket extends WebSocketController {
def echo = {
while(Http.Inbound.current().isOpen()) {
val e : WebSocketEvent =
await(Http.Inbound.current().nextEvent()).asInstanceOf[WebSocketEvent]
if(e.isInstanceOf[WebSocketFrame]) {
val frame : WebSocketFrame = e.asInstanceOf[WebSocketFrame]
if(!frame.isBinary) {
if(frame.textData.equals("quit")) {
Http.Outbound.current().send("Bye!");
disconnect();
} else {
Http.Outbound.current().send("Echo: " + frame.textData)
}
}
}
if(e.isInstanceOf[WebSocketClose]) {
Logger.info("Socket closed!")
}
}
}
}
以下是终端中的编译错误:
Compiling:
/Users/jonas/play-1.2.2RC1/jonassite/app/MySocket.scala
/Users/jonas/play-1.2.2RC1/jonassite/app/MySocket.scala:14: not found: value await
val e : WebSocketEvent = await(Http.Inbound.current().nextEvent()).asInstanceOf[WebSocketEvent]
^
/Users/jonas/play-1.2.2RC1/jonassite/app/MySocket.scala:20: not found: value disconnect
disconnect();
^
two errors found
Compiling:
/Users/jonas/play-1.2.2RC1/jonassite/app/MySocket.scala
/Users/jonas/play-1.2.2RC1/jonassite/app/MySocket.scala:14: not found: value await
val e : WebSocketEvent = await(Http.Inbound.current().nextEvent()).asInstanceOf[WebSocketEvent]
^
/Users/jonas/play-1.2.2RC1/jonassite/app/MySocket.scala:20: not found: value disconnect
disconnect();
^
two errors found
12:52:57,049 ERROR ~
@66lce6kp8
Internal Server Error (500) for request GET /handshake
Compilation error (In /app/MySocket.scala around line 14)
The file /app/MySocket.scala could not be compiled. Error raised is : not found: value await
play.exceptions.CompilationException: not found: value await
at play.scalasupport.ScalaPlugin.compilationException(ScalaPlugin.scala:129)
at play.scalasupport.ScalaPlugin.detectClassesChange(ScalaPlugin.scala:115)
at play.plugins.PluginCollection.detectClassesChange(PluginCollection.java:358)
at play.Play.detectChanges(Play.java:591)
at play.Invoker$Invocation.init(Invoker.java:186)
at Invocation.HTTP Request(Play!)
wait()
和disconnect()
是可从WebSocketController
获得的方法。但是,这些工具目前仅在Java版本中可用,而不是Scala。有关更多信息,请参见播放组中的此项
这应该在scala插件的1.0版本中提供,但是现在如果您想使用aysnc功能(等待等),那么您必须使用Java,或者查看一个Play用户开发的Java包装器。更新后,当前scala插件中似乎没有等待功能,但将在1.0版本中提供。