chatroom
chatroom copied to clipboard
《Go 语言编程之旅:一起用 Go 做项目》 第四章:聊天室
全局users map在操作不用加锁吗?是否会出现并发操作问题?
```go if (data.ats != null) { data.ats.forEach(function (nickname) { if (nickname === '@' + that.curUser.nickname) { that.usertip = '有人 @ 你了'; } }) } ``` 将that.nickname改为that.curUser.nickname 就好了
``` func (u *User) SendMessage(ctx context.Context) { for msg := range u.MessageChannel { wsjson.Write(ctx, u.conn, msg) } } ``` 你这样的话,MessageChannel close了的话,这里不是一直循环
我这边用pprof查看了下,不return掉的话是会造成goroutine泄漏的。
https://github.com/go-programming-tour-book/chatroom/blob/297866eda4fa20a5b6551c08c3cf88393211fb0a/cmd/tcp/server.go#L117-L128 conn.Close()之后是不是应该return掉,不然select会阻塞造成goroutine泄漏吧