Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 有可能接受WebSocket.acceptOrResult起作用的密封特征吗!斯卡拉_Scala_Playframework_Websocket - Fatal编程技术网

Scala 有可能接受WebSocket.acceptOrResult起作用的密封特征吗!斯卡拉

Scala 有可能接受WebSocket.acceptOrResult起作用的密封特征吗!斯卡拉,scala,playframework,websocket,Scala,Playframework,Websocket,我想用一种类型的WebSocket玩!斯卡拉 我希望WebSocket.acceptOrResult接受以下命令: case class Message(msg: String) case class CommandA(c: String) 等等 我可以用 WebSocket.acceptOrResult[JsValue, JsValue] 然后尝试按顺序将它们转换为不同的case类(命令),但我发现这很难看 如果可能的话,一个更好的方法是使用一个封闭的特征 ChatEvent并扩展命令类,

我想用一种类型的WebSocket玩!斯卡拉

我希望
WebSocket.acceptOrResult
接受以下命令:

case class Message(msg: String)
case class CommandA(c: String)
等等

我可以用

WebSocket.acceptOrResult[JsValue, JsValue]
然后尝试按顺序将它们转换为不同的case类(命令),但我发现这很难看

如果可能的话,一个更好的方法是使用一个封闭的特征

ChatEvent
并扩展命令类,即

case class Message(msg: String) extends ChatEvent
case class CommandA(c: String) extends ChatEvent
但如果按以下方式使用,则不接受命令:

  implicit val acommandFlowTransformer =
    MessageFlowTransformer.jsonMessageFlowTransformer[ChatEvent, ChatEvent]

  def openSocket = WebSocket.acceptOrResult[ChatEvent, ChatEvent]
我用过

import julienrf.json.derived
implicit val chatEventMessage: Format[ChatEvent] = derived.oformat[ChatEvent]
这使我能够做到:

Json.toJson(CommandA("aaa")).validate[ChatEvent] ---> JsSuccess[CommandA]
问题是
ChatEvent
的格式导致类扩展
ChatEvent
,而
acceptOrResult
正在等待
ChatEvent

也许解决办法是使用以下方法:

def openClientSocket = WebSocket.acceptOrResult[_ :< ChatEvent, _ :< ChatEvent]
def openClientSocket=WebSocket.acceptOrResult[\u:
但我不知道如何让它编译