在我的端点中,我得到了如下内容:
socket "/socket", MarsWeb.UserSocket,
websocket: [transport: Phoenix.Transports.WebSocket, serializer: {MarsWeb.JsonCamelSerializer, "~>2.0"}],
我正在尝试用我自己的JSON序列化程序(对传出消息进行camelcase编码(来替换JSON序列化程序。
我知道这种语法不对;它应该是什么样子?
更新:
所以为了测试的目的,我把它设置成这样:
socket "/socket", MarsWeb.UserSocket,
websocket: [transport: Phoenix.Transports.Websocket, serializer:
Phoenix.Socket.V2.JSONSerializer]
但它实际上不起作用:
** (FunctionClauseError) no function clause matching in Phoenix.Socket.negotiate_serializer/2
(phoenix 1.4.15) lib/phoenix/socket.ex:613: Phoenix.Socket.negotiate_serializer(Phoenix.Socket.V2.JSONSerializer, "2.0.0")
我认为还有一个额外的版本号问题,从源代码中看,它似乎需要一个元组。。。
最后,您需要粘贴一个元组列表。
我的解决方案是:
socket "/socket", MarsWeb.UserSocket,
websocket: [transport: Phoenix.Transports.Websocket, serializer: [{Phoenix.Socket.V1.JSONSerializer, "~> 1.0.0"}, {MarsWeb.JsonCamelSerializer, "~> 2.0.0"}]]