У меня есть клиент приложения (javascript) -сервер (golang), и соединение между ними происходит через websocket. Я планирую использовать двоичные сообщения, и я хочу создать свой собственный протокол для обмена сообщениями, как на этой странице protocol.Golang: работа с двоичными данными
Я уже понял это в javascript, используя DataView, но не в golang. Событие примитивного типа данных аналогично, как у них есть int8, uint8, int16, uint16 и т. Д., Я не могу понять это.
Это кадр сообщения:
1 Uint8 opcode
2 Uint16 msg
Это пример яваскрипта обработки входящего формы сообщения WebSocket с рамкой сообщения выше код:
websocket.onmessage = function(evt) {
var data = new DataView(evt.data);
var opcode = data.getUint8(0);
var msg = data.getUint16(1);
}
Можете ли вы показать мне, как это сделать в голанге? Я использую gorilla websocket. Я знаю, что прочитанное сообщение находится в []byte
, но я не знаю, как его нарезать, как javascript с помощью DataView.
Благодаря
Я рекомендую вам использовать [Protobuf] (https://developers.google.com/protocol-buffers/docs/gotutorial) или просто [JSON] (HTTP: // WWW. json.org/) –
Спасибо за вашу рекомендацию, я уже делаю это с JSON раньше, но теперь это фаза оптимизации, поэтому мне нужно переключиться на двоичные данные. Я хочу решение с исходными двоичными данными, такими как мой пример в javascript. – billyzaelani
время использования плоских буферов https://google.github.io/flatbuffers/flatbuffers_guide_use_go.html –