54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
|
|
"github.com/googollee/go-socket.io"
|
|
)
|
|
|
|
func main() {
|
|
server, err := socketio.NewServer(nil)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
server.On("connection", func(so socketio.Socket) {
|
|
log.Println("on connection")
|
|
so.Join("chat")
|
|
so.On("chat message", func(msg string) {
|
|
m := make(map[string]interface{})
|
|
m["a"] = "你好"
|
|
e := so.Emit("cn1111", m)
|
|
//这个没有问题
|
|
fmt.Println("\n\n")
|
|
|
|
b := make(map[string]string)
|
|
b["u-a"] = "中文内容" //这个不能是中文
|
|
m["b-c"] = b
|
|
e = so.Emit("cn2222", m)
|
|
log.Println(e)
|
|
|
|
log.Println("emit:", so.Emit("chat message", msg))
|
|
so.BroadcastTo("chat", "chat message", msg)
|
|
})
|
|
// Socket.io acknowledgement example
|
|
// The return type may vary depending on whether you will return
|
|
// For this example it is "string" type
|
|
so.On("chat message with ack", func(msg string) string {
|
|
return msg
|
|
})
|
|
so.On("disconnection", func() {
|
|
log.Println("on disconnect")
|
|
})
|
|
})
|
|
server.On("error", func(so socketio.Socket, err error) {
|
|
log.Println("error:", err)
|
|
})
|
|
|
|
http.Handle("/socket.io/", server)
|
|
http.Handle("/", http.FileServer(http.Dir("./asset")))
|
|
log.Println("Serving at localhost:5000...")
|
|
log.Fatal(http.ListenAndServe(":5000", nil))
|
|
}
|