面向業(yè)務(wù),實(shí)戰(zhàn)項(xiàng)目 從頭擼 golang websocket
websocket?一看就會一用就廢
主要原因是操作簡單,但做到性能優(yōu)化,業(yè)務(wù)邏輯層次感強(qiáng),并能很好的用上一些go的特性
還真是對剛轉(zhuǎn)go的同行們不少的考驗(yàn)
我是開始讓員工擼了幾次,,,發(fā)現(xiàn)沒什么本質(zhì)的進(jìn)步,,,自己加個班吧~~~
結(jié)果試了幾次感覺效果也不怎么佳
然后,各種get? git? ?對幾個go基礎(chǔ)問題? 特性花點(diǎn)時間細(xì)究
1.?用什么存websocket 連接?
具說新手最好用sync.Map
但更多的說還是map?讀寫鎖效果更佳,那么。。。麻煩點(diǎn)就麻煩點(diǎn)吧!!
2.要不要順便考慮上grpc?
畢竟。。聊天室是很消耗服務(wù)器的功能,
如果不用分布式開發(fā),單機(jī)能力有限,
尤其是一個直播營銷活動,聊天GG?可以想象有多尷尬。。。
但是如果剛?cè)胧?,無疑提高了開發(fā)邏輯復(fù)雜度,比如如何發(fā)流,如何消息同步,等等。。。
想想還是先用簡單方案,把手頭的項(xiàng)目交了,有時間再加上grpc?畢竟改造的話,要簡單多了
還有一個原因,這樣開發(fā),可以考驗(yàn)一下單機(jī)優(yōu)化
3.用到Golang哪些基礎(chǔ)知識?
1.讀寫鎖? ?sync.RWMutex? ??
? ? 一些全局操作,避免同時操作全局map?避免GG...
? ? 但又要考慮盡可能的不犧牲性能
2."github.com/gorilla/websocket"
????這個不用說了,大家都在用~
3.goroutine?
4.chan go必了解的管道
5.struct?interface 一些使用技巧