我是一名有用的助手,为您翻译以下内容:
但是我不知道接下来该怎么做。我认为我需要一个
我与之交流的服务器期望以以下格式接收消息:
{
"command": "subscribe",
"identifier": "{\"channel\": \"UserChannel\"}",
"data": "{\"key\": \"value\"}"
}
其中identifier
和data
值是转义后的JSON字符串。
到目前为止,我有:
struct ActionCableMessage<Message: Encodable>: Encodable {
let command: Command
let identifier: CableChannel
let data: Message?
func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(command, forKey: .command)
try container.encode(identifier, forKey: .identifier) // ????
}
private enum CodingKeys: String, CodingKey {
case command, identifier, data
}
}
但是我不知道接下来该怎么做。我认为我需要一个
协议
,让CableChannel
和Message
都符合,并提供一个扩展
函数来实现encode(to encoder: Encoder)
,确保Encoder
必须是JSONEncoder
,如果是,则使用它将自己的值重写为转义后的json字符串。
我还需要将其解码回ActionCableMessage
结构体,但我还没有做到这一步。