基于TCP协议的 海量用户即时通讯系统(聊天室)知识点汇总

上一篇复习了聊天室代码的编辑过程,这次汇总一下聊天室涉及的知识点,存粹是为了复习!

一、TCP核心代码

1.服务器监听Listen

listen, err := net.Listen("tcp", "127.0.0.1:8889")

是等待client连接的状态

2.服务器获取连接Accept

conn, err := listen.Accept()

完成三次握手,服务器与客户端建立连接

3.客户端主动连接服务器Dial

conn, err := net.Dial("tcp", "localhost:8889")

4.向连接中读数据Read

n, err = conn.Read(buf[:len])

5.向连接中写数据Write

n, err := conn.Write(Buf[:len])

二、redis使用

1.初始化连接池

func initPool(address string, maxIdle, maxActive int, idleTimeout time.Duration){

	pool = &redis.Pool{
		MaxIdle : maxIdle,//最大空闲连接数
		MaxActive : maxActive, //表实和数据库的最大连接数,0表示不限制
		IdleTimeout : idleTimeout,//最大空闲时间
		Dial: func()(redis.Conn, error){
		return redis.Dial("tcp", address)
		},
	}
}

2.从redis写数据

从初始化后的连接池中取一个连接

conn := redis.pool.Get()

再写入哈希

_, err = conn.Do("hset", "user", user.UserId, string(data))

redis读数据

同样是先获取redis连接
再读

res, err := redis.String(conn.Do("hget", "user",id))
	if err != nil{
		//
		if err == redis.ErrNil{//表示在user哈希中没有找到对应id
			err = ERROR_USER_NOTEXISTS
		}
		return
	}

核心api就这几个
redis还有好多好多知识点,之后要总结

猜你喜欢

转载自blog.csdn.net/qq_44477844/article/details/107878851