shi*_*ina 4 json scala websocket playframework playframework-2.3
我使用带有playframework 2.3的websockets.
这是官方操作页面的片段.
def socket = WebSocket.acceptWithActor[JsValue, JsValue] { request => out =>
MyWebSocketActor.props(out)
}
Run Code Online (Sandbox Code Playgroud)
当我使用代码时,如何捕获json解析错误(RuntimeException:解析JSON时出错)?
使用内置的json帧格式化器,你不能,这里是源代码:
如果Json.parse抛出异常,它会将该异常抛出到Netty,这将提醒Netty异常处理程序,它将关闭WebSocket.
你可以做的是定义你自己的json框架格式化程序来处理异常:
import play.api.mvc.WebSocket.FrameFormatter
implicit val myJsonFrame: FrameFormatter[JsValue] = implicitly[FrameFormatter[String]].transform(Json.stringify, { text =>
try {
Json.parse(text)
} catch {
case NonFatal(e) => Json.obj("error" -> e.getMessage)
}
})
def socket = WebSocket.acceptWithActor[JsValue, JsValue] { request => out =>
MyWebSocketActor.props(out)
}
Run Code Online (Sandbox Code Playgroud)
在WebSocket actor中,您可以检查具有错误字段的json消息,并根据您的意愿对其进行响应.
| 归档时间: |
|
| 查看次数: |
1352 次 |
| 最近记录: |