实现群聊

一、 原理|思路

分析群id,找到加了这个群的用户,把消息发送过去 方案一、 map 优势是锁的频次低 劣势是要轮训全部map

  1. type Node struct {
  2. Conn *websocket.Conn
  3. //并行转串行,
  4. DataQueue chan []byte
  5. GroupSets set.Interface
  6. }
  7. //映射关系表
  8. var clientMap map[int64]*Node = make(map[int64]*Node,0)

方案二、 map<群id> 优势是找用户ID非常快 劣势是发送信息时需要根据userid获取node,锁的频次太高

  1. type Node struct {
  2. Conn *websocket.Conn
  3. //并行转串行,
  4. DataQueue chan []byte
  5. }
  6. //映射关系表
  7. var clientMap map[int64]*Node = make(map[int64]*Node,0)
  8. var comMap map[int64]set.Interface= make(map[int64]set.Interface,0)

二、 需要处理的问题

1、当用户接入的时候初始化groupset

25、实现群聊 - 图1 25、实现群聊 - 图2

2、当用户加入群的时候刷新groupset

25、实现群聊 - 图3 25、实现群聊 - 图4

3、完成信息分发

25、实现群聊 - 图5 25、实现群聊 - 图6

三、 需要处理的问题

1、还需实现建群,加群的业务逻辑

25、实现群聊 - 图7

25、实现群聊 - 图8

25、实现群聊 - 图9

启动进行测试创建群聊,加群,发送群聊信息即可