我正在尝试将一个Int8Array从浏览器发送到go-socked.io,这是我的客户代码:
function init(){
conn = io('http://localhost:8080/');
var c = new Int8Array([127]);
conn.emit('m',c)
}
这是我的服务器代码
func main() {
server, err := socketio.NewServer(nil)
if err!= nil{
log.Fatal(err)
}
server.On("connection",on_connection)
http.Handle("/socket.io/", server)
http.Handle("/src/", maxAgeHandler(0,http.FileServer(http.Dir("./"))))
http.Handle("/app/", maxAgeHandler(0,http.FileServer(http.Dir("./"))))
http.ListenAndServe(":8080",nil)
}
func on_connection(so socketio.Socket){
log.Println("On connection")
so.Join("Room")
so.On("m",func(msg *socketio.Attachment){
b, _ := ioutil.ReadAll(msg.Data) <---- I got error in this line
fmt.Println(b)
})
}
我说错了:
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
panic: runtime error: invalid memory address or nil pointer dereference
我想知道如何读取消息中的字节数据。
答案 0 :(得分:0)
您没有发送附件,只发送数据。此数据可以与map[string]int8
映射使用,因为您正在发送一个int8数组,并在socketio中将其转换为映射。
func on_connection(so socketio.Socket) {
log.Println("On connection")
so.Join("Room")
so.On("m", func(data map[string]int8) {
array := make([]int8, len(data))
for k, v := range data {
pos, _ := strconv.Atoi(k)
array[pos] = v
}
fmt.Println(array)
})
}