ПроблемаGolang Работа с типами
мне нужна помощь, работая с типами в Golang, я получаю супер замешательстве. Я пытаюсь изменить пример чата websocket от Gorilla, и я хочу перейти в JSON и обработать его соответствующим образом. Мне нужно установить, например, пользователя, и отправить сообщение на веб-узел.
В текущей реализации все, что он делает, это получить строку и передать ее обратно, передав ее всем подключенным клиентам.
Например, я хочу иметь возможность установить структуру данных следующим образом и обрабатывать ее по-разному.
входящий пользователь будет:
{
'type': "user",
'value': "John Doe"
}
Incomming сообщение будет:
{
'type': "message",
'value': "Hi There, how are you?"
}
Пожалуйста, обратитесь к следующему коду: https://github.com/gorilla/websocket/blob/master/examples/chat/conn.go#L52
for {
_, message, err := c.ws.ReadMessage()
if err != nil {
break
}
h.broadcast <- message
}
данных
Таким образом, приведенный выше код работает для одиночных строк, поскольку весь сервер выполняет передачу входящего сообщения от любого клиента ко всем. Но я хочу иметь возможность сохранять пользователей и отправлять список активных пользователей обратно клиенту вместе с новым сообщением.
Для этого, на мой взгляд, мне придется обрабатывать разные входящие сообщения по-разному. Я попытался unmarchal в Incomming message
, но когда я распечатать тип это так:
2015/11/24 20:03:10 []uint8
ВОПРОС
Как я могу идти о чтении этого входного потока, и распаковать этот JSON? Это отладки я добавил в раздел:
for {
_, dataString, err := c.ws.ReadMessage()
if err != nil {
break
}
log.Println(reflect.TypeOf(dataString))
var data MessageData
err = json.Unmarshal(dataString, &data)
log.Println(data.Type)
log.Println(data.Value)
if err != nil {
log.Println(err)
}
h.broadcast <- dataString
}
возвращающий
2015/11/24 20:03:10 []uint8
2015/11/24 20:03:10
2015/11/24 20:03:10
Не стесняйтесь, чтобы принять свой собственный ответ, то. –
Будем благодарны, вам нужно подождать 48 часов, хотя :-D –