最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

8小時(shí)轉(zhuǎn)職Golang工程師(如果你想低成本學(xué)習(xí)Go語言)

2022-10-12 10:05 作者:隨風(fēng)的葉子  | 我要投稿

超時(shí)踢出功能:我直接使用net.Conn的方法,超過時(shí)間就不等待了,這樣我就可以退出當(dāng)前協(xié)程和關(guān)閉連接了。

func (s *Server) handler(user *User) {
   //監(jiān)聽信息的接收
   go func() {
      buf := make([]byte, 1024*4) //大小4KB
      for {
         user.Conn.SetReadDeadline(time.Now().Add(10 * time.Second))
         n, err := user.Conn.Read(buf)
         //nc被退出時(shí)觸發(fā),下線
         if n == 0 {
            user.Offline() //下線
            return
         }
         //異常處理(ctrl+c退出不屬于io.EOF,所以丟在下面吧)
         if err != nil && err != io.EOF {
            user.Offline() //出現(xiàn)異常,下線
            log.Printf("Conn.Read err: %v\n", err)
            return
         }
         //消息處理
         user.DealWithMessage(string(buf[:n-1]))
      }
   }()
}


------用戶下線代碼

// Offline 用戶下線
func (u *User) Offline() {
   s := u.server
   s.broadcast(u.Name+",下線!", u)
   s.lock.Lock()
   delete(s.onlineUsers, u.Name)
   s.lock.Unlock()
   u.Conn.Close() //關(guān)閉連接
}


8小時(shí)轉(zhuǎn)職Golang工程師(如果你想低成本學(xué)習(xí)Go語言)的評論 (共 條)

分享到微博請遵守國家法律
汤原县| 贡觉县| 肥东县| 新沂市| 寿宁县| 简阳市| 常德市| 龙川县| 巨野县| 蓝山县| 高青县| 海城市| 石楼县| 石林| 简阳市| 景东| 兴山县| 鄂托克旗| 同德县| 临武县| 余姚市| 中宁县| 舞阳县| 万荣县| 罗江县| 台安县| 平阳县| 靖边县| 龙口市| 类乌齐县| 孝感市| 通州区| 吉安市| 平利县| 阜阳市| 香格里拉县| 名山县| 新营市| 建平县| 泗水县| 新邵县|