前言
看了无闻老师的一节关于 goroutine 与 channel 的讲解课堂,感觉不是很明白,所以决定来实现一个聊天室的功能
为什么是群聊呢?
因为群聊相对逻辑简单些
注:本栗子只用到了 goroutine 并没有用到 channel
概述
1.聊天室的组成
聊天室分为两个部分,分别是:
- 服务端
- 客户端
然后,一般情况下我们互相聊天使用的都只是客户端而已,服务端只是起到调度的作用
2.信息发送与接收的流程
假设我们有 服务端(S)
客户端(C1)
客户端(C2)
客户端(C3)
并且 S 已经 与 C1 C2 C3 建立了连接
理论上的流程是这样的:
- C1 向 S 发出信息
- S 接收到信息
- S 将接收到的信息广播给 C2 C3
- C2 C3 接收信息
实践
1.服务端
1) 代码
package main
import (
"time"
"fmt"
"net"
)
// 客户端 map
var client_map = make(