聊天消息
对服务端而言,一对一聊天就是将消息从一个 socket 转发到另一个 socket。
更新 main.go:
@@ -9,6 +9,7 @@ import (
)
type User = map[string]interface{}
+type Data = User
const port = 4000
@@ -43,6 +44,18 @@ func main() {
}
io.Sockets().Emit("contacts", items)
})
+
+ client.On("chat", func(args ...any) {
+ data, ok := args[0].(Data)
+ if !ok {
+ return
+ }
+ to, ok := data["to"].(string)
+ if !ok {
+ return
+ }
+ io.Sockets().To(socket.Room(to)).Emit("chat", data)
+ })
})
http.Handle("/socket.io/", io.ServeHandler(nil))
data
包含以下字段:
- to: 消息的目标接收者 socket ID。
- from: 发送者的 socket ID。
- msg: 消息内容。
io.Sockets().To(...).Emit(...)
用于将发出(emit)的事件指定到目标 socket 或房间。