我有应用程序客户端(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一样。
由于
答案 0 :(得分:0)
对于uint16,您需要二进制包。仔细检查LittleEndian是否符合您的要求。
package main
import (
"encoding/binary"
)
func main() {
a := []byte("yak")
/* opcode */ _ = uint8(a[0])
/* message */ _ = binary.LittleEndian.Uint16(a[1:3])
}