【发布时间】:2013-06-08 02:54:05
【问题描述】:
我正在为我的 websocket 使用牛仔和 jiffy(Json 库)。我可以在我的 websocket_handle 中接收来自客户端的数据,因为现在我有类似的代码
websocket_handle({text, Msg}, Req, Handle) ->
Message = jiffy:decode(Msg),
case Message of
模式1 -> ............ 模式2-> ………… 结尾, {ok, Res, State}
但是,我想在句柄级别进行模式匹配而不是这个......
websocket_handle({text, pattern1}, Req, State),
websocket_handle({text, pattern2}, Req, State)
问题是我不能在 websocket_handle 的参数中使用 jiffy:decode .. 所以我不能写类似的东西
websocket_handle({text, jiffy:decode(Msg), Req, State})
如何让它工作???
【问题讨论】:
-
嗨阿图尔。除了以更少的行结束(如果它有效,但正如您所发现的那样),您是否还有另一个原因要在函数签名中进行解码?正如我倾向于说,稍后使用
case表达式是一种好方法,或者在解码后,调用与 case 步骤类似的模式匹配的不同函数。 -
Hey Ward 感谢您的回复.. 我可以毫无问题地使用案例,但我想避免这种情况,原因很简单,将来可能会有很多事件,每个事件都可以返回不同的响应.. 所以我想使用函数签名将它们分开......而且我认为匹配函数签名是一种更简洁的方法:)
标签: json erlang websocket cowboy