3.2 实现 Client v0.2

package main

import (
    "fmt"
    "net"

    "github.com/bwmarrin/snowflake"
    "github.com/huoyijie/GoChat/lib"
)

func main() {
    // 启动单独协程,监听 ctrl+c 或 kill 信号,收到信号结束进程
    go lib.SignalHandler()

    // 客户端进行 tcp 拨号,请求连接 127.0.0.1:8888
    conn, err := net.Dial("tcp", "127.0.0.1:8888")
    // 连接遇到错误则退出进程
    lib.FatalNotNil(err)

    // id 由服务器生成,暂时未发给客户端
    var id snowflake.ID
    // 连接成功后启动协程输出服务器的转发消息
    go lib.HandleConnection(
        conn,
        id,
        func(msg string) {
            lib.PrintMessage(msg)
        },
        func() {
            // 从当前方法返回时,关闭连接
            conn.Close()
        })

    var input string
    for {
        // 读取用户输入消息
        fmt.Scanf("%s", &input)
        // 向服务端发送消息
        fmt.Fprintf(conn, "%s\r\n", input)
    }
}

client 要循环读取用户输入,然后作为消息发送给 server

var input string
for {
    // 读取用户输入消息
    fmt.Scanf("%s", &input)
    // 向服务端发送消息
    fmt.Fprintf(conn, "%s\r\n", input)
}