make loop

This commit is contained in:
chai2010
2015-12-28 15:57:07 +08:00
parent 77148f84d4
commit ba7261d140
25 changed files with 44 additions and 44 deletions

View File

@@ -55,7 +55,7 @@ func broadcaster() {
}
```
broadcaster監聽來自全局的entering和leaving的channel來知客戶端的到來和離開事件。當其接收到其中的一個事件時會更新clients集合當該事件是離開行爲時它會關閉客戶端的消息發出channel。broadcaster也會監聽全局的消息channel所有的客戶端都會向這個channel中發送消息。當broadcaster接收到什麽消息時就會將其廣播至所有連接到服務端的客戶端。
broadcaster監聽來自全局的entering和leaving的channel來知客戶端的到來和離開事件。當其接收到其中的一個事件時會更新clients集合當該事件是離開行爲時它會關閉客戶端的消息發出channel。broadcaster也會監聽全局的消息channel所有的客戶端都會向這個channel中發送消息。當broadcaster接收到什麽消息時就會將其廣播至所有連接到服務端的客戶端。
現在讓我們看看每一個客戶端的goroutine。handleConn函數會爲它的客戶端創建一個消息發出channel併通過entering channel來通知客戶端的到來。然後它會讀取客戶端發來的每一行文本併通過全局的消息channel來將這些文本發送出去併爲每條消息帶上發送者的前綴來標明消息身份。當客戶端發送完畢後handleConn會通過leaving這個channel來通知客戶端的離開併關閉連接。