» Go:使用Socket.IO创建Web Chat App在线聊天应用 » 2. 开发 » 2.3 聊天消息

聊天消息

对服务端而言,一对一聊天就是将消息从一个 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 或房间。

上页下页