0

在我的端点中,我得到了如下所示的内容:

  socket "/socket", MarsWeb.UserSocket,
    websocket: [transport: Phoenix.Transports.WebSocket, serializer: {MarsWeb.JsonCamelSerializer, "~>2.0"}],

我正在尝试用我自己的序列化器替换 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")

我认为还有一个版本号的额外问题,并且查看源代码,它看起来需要一个元组......

4

1 回答 1

2

最后,您需要粘贴一个元组列表。

我的解决方案是:

  socket "/socket", MarsWeb.UserSocket,
    websocket: [transport: Phoenix.Transports.Websocket, serializer: [{Phoenix.Socket.V1.JSONSerializer, "~> 1.0.0"}, {MarsWeb.JsonCamelSerializer, "~> 2.0.0"}]]
于 2020-05-09T20:13:42.873 回答