websocket是一種在單個tcp連線上進行全雙工通訊的協議。websocket讓客戶端和服務端之間的資料交換變得非常簡單,且允許伺服器主動向客戶端推送資料,並且之後客戶端和服務端所有的通訊都依靠這個專用協議進行。
在websocket出現之前,一些**為了實現訊息的推送,採用最多的技術是ajax輪詢,每隔一段時間,由瀏覽器向伺服器發出http請求,然後由伺服器返回最新的資料給瀏覽器。在這種模式下,瀏覽器需要不斷地向伺服器發出http請求,而http請求可能包含較長的頭部,其中真正有效的資料可能只佔一小部分,顯然浪費頻寬,影響傳輸效率。
而客戶端和服務端之間的websocket連線一旦建立,就可以一直保持連線狀態,不需要重**起連線請求,能更好地節省網路頻寬資源,實時性更高。
需要安裝第三方包:
}// echo為處理程式
func echo(w *websocket.conn)
fmt.println("客戶端: ",recmsg)
msg := ""
if recmsg == "猜猜年齡" else if recmsg == "你好" else
fmt.println(msg)
// 發訊息給客戶端
if err = websocket.message.send(w, msg); err != nil }}
// 返回靜態html
func handleindex(writer http.responsewriter, request *http.request)服務端執行後,瀏覽器訪問,並開啟開發者模式的控制台。
傳送訊息
汪明 - 《go併發程式設計實戰》清華大學出版社
gRPC的簡單Go例子
grpc是乙個高效能 通用的開源rpc框架,其由google主要面向移動應用開發並基於http 2協議標準而設計,基於protobuf protocol buffers 序列化協議開發,且支援眾多開發語言。grpc提供了一種簡單的方法來精確地定義服務和為ios android和後台支援服務自動生成可...
Go簡單的結束程式
當你寫的go程式在退出時做一些操作就需要捕捉訊號後進行業務處理再關閉程式 但是當程式主線不止一條時,邏輯會些許複雜。一般捕捉訊號的函式只有乙個,但是退出的地方卻多了起來,退出方案必須具有拓展性與簡單性才能讓自己不再糾結於此。一般資料都時在講捕捉訊號與退出,而例子往往只考慮單個主線退出,當你寫個命令列...
Go實現簡單的Socket服務端筆記 二
第二步 迴圈讀取資料 利用for迴圈,等待客戶端傳送資料 本文 檢視github 修改上一步的 讓服務端迴圈接收客戶端傳送的訊息,主要使用for迴圈,直接上 package main import fmt net func main 程式返回後關閉socket defer tcplistener.c...