服務端實現
package main
import (
"encoding/json"
"fmt"
"log"
"net/http"
"golang.org/x/net/websocket"
)
func add(ws *websocket.Conn) {
msg := make([]byte, 512)
n, err := ws.Read(msg)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Receive: %s\n", msg[:n])
sendMsg := "訂單添加:" + string(msg[:n])
_, err = ws.Write([]byte(sendMsg))
if err != nil {
log.Fatal(err)
}
fmt.Printf("Send: %s\n", sendMsg)
}
func del(ws *websocket.Conn) {
var msg string
err := websocket.Message.Receive(ws, &msg)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Receive: %s\n", msg)
sendMsg := "訂單刪除:" + msg
err = websocket.Message.Send(ws, sendMsg)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Send: %s\n", sendMsg)
}
func main() {
http.Handle("/add", websocket.Handler(add))
http.Handle("/del", websocket.Handler(del))
fmt.Println("開始監聽8888端口...")
err := http.ListenAndServe(":8888", nil)
if err != nil {
log.Fatal(err)
}
}
客戶端實現
package main
import (
"encoding/json"
"fmt"
"log"
"golang.org/x/net/websocket"
)
func add(param string) {
ws, err := websocket.Dial("ws://127.0.0.1:8888/add", "", "http://127.0.0.1:8888/")
if err != nil {
log.Fatal(err)
}
defer ws.Close() //關閉連接
sendMsg := []byte(param)
_, err = ws.Write(sendMsg)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Send: %s\n", string(sendMsg))
msg := make([]byte, 512)
m, err := ws.Read(msg)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Receive: %s\n", msg[:m])
}
func del(param string) {
ws, err := websocket.Dial("ws://127.0.0.1:8888/del", "", "http://127.0.0.1:8888/")
if err != nil {
log.Fatal(err)
}
defer ws.Close() //關閉連接
sendMsg := param
err = websocket.Message.Send(ws, sendMsg)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Send: %s\n", sendMsg)
var msg string
err = websocket.Message.Receive(ws, &msg)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Receive: %s\n", msg)
}
func main() {
add("小龍蝦")
add("魚香肉絲")
del("小龍蝦")
}
測試
啟動服務端代碼:

運行客戶端代碼:

服務端邏輯處理:

這里客戶端是用后端代碼實現,當需要前端頁面與服務端進行交互時,可以將客戶端改成頁面請求調用,收到消息后顯示即可。
公眾號:李田路口
