Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit bce53d5

Browse files
committed
bugfix
1 parent a68f96b commit bce53d5

File tree

1 file changed

+11
-4
lines changed
  • websites/code2/studygolang/src/logic

1 file changed

+11
-4
lines changed

websites/code2/studygolang/src/logic/book.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ const (
2525
WsMsgOnline // 发送在线用户数(和需要时也发历史最高)
2626
)
2727

28+
const MessageQueueLen = 1
29+
2830
type Message struct {
2931
Type int `json:"type"`
3032
Body interface{} `json:"body"`
@@ -67,15 +69,20 @@ func (this *UserData) Remove(serverId int) {
6769
func (this *UserData) InitMessageQueue(serverId int) {
6870
this.rwMutex.Lock()
6971
defer this.rwMutex.Unlock()
70-
this.serverMsgQueue[serverId] = make(chan *Message, 4)
72+
this.serverMsgQueue[serverId] = make(chan *Message, MessageQueueLen)
7173
}
7274

7375
func (this *UserData) SendMessage(message *Message) {
7476
this.rwMutex.RLock()
7577
defer this.rwMutex.RUnlock()
7678

77-
for _, messageQueue := range this.serverMsgQueue {
78-
messageQueue <- message
79+
for serverId, messageQueue := range this.serverMsgQueue {
80+
// 有可能用户已经退出,导致 messageQueue满,阻塞
81+
if len(messageQueue) < MessageQueueLen {
82+
messageQueue <- message
83+
} else {
84+
logger.Infoln("server_id:", serverId, "had close")
85+
}
7986
}
8087
}
8188

@@ -100,7 +107,7 @@ func (this *book) AddUser(user, serverId int) *UserData {
100107
userData.lastAccessTime = time.Now()
101108
} else {
102109
userData = &UserData{
103-
serverMsgQueue: map[int]chan *Message{serverId: make(chan *Message, 4)},
110+
serverMsgQueue: map[int]chan *Message{serverId: make(chan *Message, MessageQueueLen)},
104111
lastAccessTime: time.Now(),
105112
}
106113
this.users[user] = userData

0 commit comments

Comments
 (0)