【发布时间】:2017-05-10 03:47:14
【问题描述】:
我有应用程序客户端(javascript)-服务器(golang),它们之间的连接都在 websocket 上。我正在计划使用二进制消息,我想创建自己的消息协议,如本页 protocol 中所示。
我已经在 javascript 中使用 DataView 解决了这个问题,但在 golang 中没有。事件原始数据类型相似,例如它们有 int8、uint8、int16、uint16 等,我想不通。
这是消息框:
1 Uint8 opcode
2 Uint16 msg
这是处理带有上述消息框的 websocket 传入消息的 javascript 代码示例:
websocket.onmessage = function(evt) {
var data = new DataView(evt.data);
var opcode = data.getUint8(0);
var msg = data.getUint16(1);
}
你能告诉我如何在 golang 中做到这一点吗?我正在使用gorilla websocket。我知道已读消息在[]byte 中,但我不知道如何像 javascript 对 DataView 那样对它进行切片。
谢谢
【问题讨论】:
-
感谢您的推荐,我之前已经使用 JSON 执行此操作,但现在是优化阶段,因此我需要切换到二进制数据。我想要原始二进制数据的解决方案,就像我在 javascript 中的示例一样。
-
是时候使用 Flat Buffers google.github.io/flatbuffers/flatbuffers_guide_use_go.html
标签: javascript go websocket