GO - 即时通信系统(一)

424 阅读1分钟

即时通信系统版本预览:

  1. 版本一:构建基础server
  2. 版本二:用户上线功能
  3. 版本三:用户消息广播机制
  4. 版本四:用户业务层封装
  5. 版本五:在线用户查询
  6. 版本六:修改用户名
  7. 版本七:超时强踢功能
  8. 版本八:私聊功能
  9. 版本九:客户端实现

版本一 :构建server

创建文件

  1. main.go
  2. server.go

server.go中的方法

  1. 创建server对象
type Server struct {
   Ip string
   Port int
}
  1. 创建获取Server对象的方法
// 创建一个server的接口
func NewServer(ip string, port int) *Server {
   server := &Server{
      Ip:   ip,
      Port: port,
   }

   return server
}
  1. 创建链接成功之后的处理方法
func (this *Server) Handler(conn net.Conn) {
    fmt.println("链接建立成功")
}
  1. 启动server服务的方法
func (this *Server) Start() {
    
    // socket listen
    listen, err := net.Listen("tcp", fmt.Sprintf("%s:%d", this.Ip, this.Port))
    
    if err != nil {
        rmt.println(" Listen accept err :", err)
    }
    
    //close listen
    defer listen.Close()
    
    // 给一个死循环,不断获取信息
    for {
    
        conn, err := listen.Accept()
        
        if err != nil {
            fmt.println("lsiten accept err :", err)
            continue
        }
        
        // do handler
        go this.Handler(conn)
        
    }   
    
}

main.go

  1. 创建Server对象,调用start方法启动Server
server := NewServer("127.0.0.1",8888)
server.Start()

iterm 或者 cmd / IDE中 Terminal 操作

  1. 编译
go build -o server server.go main.go
  1. 通过本地链接127.0.0.1:8888
nc 127.0.0.1 8888