我有应用程序客户端(javascript)-server(golang),它们之间的连接遍布websocket . 我正在计划使用二进制消息,我想创建自己的消息协议,如本页protocol .
我已经通过使用DataView而不是golang在javascript中弄明白了 . 事件原始数据类型类似于他们有int8,uint8,int16,uint16等,我无法弄明白 .
这是消息帧:
1 Uint8 opcode
2 Uint16 msg
这是javascript代码处理传入消息表单websocket的示例,其中包含上面的消息帧:
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一样 .
谢谢
1 回答
对于uint16,您需要二进制包 . 仔细检查LittleEndian是否符合您的要求 .
https://play.golang.org/p/HRu7C5h2a5