请使用golang实现websokect不断接受不同时刻前端传输的不同json数据且响应不同的数据
下面是一个使用Golang实现WebSocket的示例代码,可以不断接收前端传输的不同JSON数据,并根据接收到的数据响应不同的数据。
package main
import (
"fmt"
"log"
"net/http"
"github.com/gorilla/websocket"
)
var upgrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool {
return true
},
}
func handleWebSocket(w http.ResponseWriter, r *http.Request) {
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Println("Failed to upgrade connection:", err)
return
}
defer conn.Close()
for {
// 读取前端传输的数据
_, msg, err := conn.ReadMessage()
if err != nil {
log.Println("Failed to read message:", err)
break
}
fmt.Println("Received:", string(msg))
// 根据接收到的数据进行处理
// 这里只是简单示例,可以根据实际需求进行处理
switch string(msg) {
case "hello":
response := []byte("Hello, client!")
err = conn.WriteMessage(websocket.TextMessage, response)
if err != nil {
log.Println("Failed to write message:", err)
break
}
case "time":
response := []byte("Current time is 2022-01-01 12:00:00")
err = conn.WriteMessage(websocket.TextMessage, response)
if err != nil {
log.Println("Failed to write message:", err)
break
}
default:
response := []byte("Invalid command")
err = conn.WriteMessage(websocket.TextMessage, response)
if err != nil {
log.Println("Failed to write message:", err)
break
}
}
}
}
func main() {
http.HandleFunc("/ws", handleWebSocket)
log.Println("Server started on http://localhost:8080")
err := http.ListenAndServe(":8080", nil)
if err != nil {
log.Fatal("Failed to start server:", err)
}
}
这段代码创建了一个WebSocket服务器,通过/ws路径来处理WebSocket连接。在handleWebSocket函数中,我们使用conn.ReadMessage从连接中读取前端传输的数据,并根据接收到的数据进行处理。在这个示例中,我们只是简单地判断接收到的数据,并根据不同的数据内容分别响应不同的数据。
你可以根据实际需求修改switch语句中的逻辑,处理不同的数据,并响应不同的数据给前端
原文地址: https://www.cveoy.top/t/topic/ijA1 著作权归作者所有。请勿转载和采集!