go_study/bilibili/aceld/IM-System/user.go

33 lines
539 B
Go

package main
import "net"
type User struct {
Name string
Addr string
C chan string
conn net.Conn
}
// 创建一个User的API
func NewUser(conn net.Conn) *User {
userAddr := conn.RemoteAddr().String()
user := &User{
Name: userAddr,
Addr: userAddr,
C: make(chan string),
conn: conn,
}
// 启动监听当前user channel的goroutine
go user.ListenMessage()
return user
}
// User类的成员方法: 监听消息
func (user *User) ListenMessage() {
for {
msg := <-user.C
user.conn.Write([]byte(msg + "\n"))
}
}