为什么带迭代的websockets不能为输入帧和输出帧提供单独的类型?

时间:2015-07-30 20:42:52

标签: scala playframework

根据播放文档on WebSockets,如果为每种类型提供FrameFormatter,则可以对输入帧和输出帧使用不同的类型。这是有道理的。

但是,在WebSocket object处理Iteratees的所有工厂方法都采用单个类型参数[A],而使用Actors实现的方法采用两个类型参数[In, Out]。我不明白为什么对于使用迭代的输入和输出使用单独的类型和Actors一样有用。

1 个答案:

答案 0 :(得分:0)

答案是它们可以有两种不同的类型,但是play不能为这个用例提供简单的API。为了最大限度地控制websocket,不要使用方便构造函数,而是直接使用实际的构造函数,声明为:

case class WebSocket[In, Out]
  (f: RequestHeader => Future[Either[Result, (Enumerator[In], Iteratee[Out, Unit]) => Unit]])
  (implicit val inFormatter: WebSocket.FrameFormatter[In], val outFormatter: WebSocket.FrameFormatter[Out])

Source