Golang 实现主动发送消息给前端 - WebSocket 技术详解
在 Golang 中主动发送消息给前端可以使用 WebSocket 技术。WebSocket 是一种双向通信协议,可以在客户端和服务器之间实现实时通信。
下面是一个简单的 Golang 实现 WebSocket 的示例代码:
package main
import (
"fmt"
"log"
"net/http"
"github.com/gorilla/websocket"
)
var upgrader = websocket.Upgrader{
ReadBufferSize: 1024,
WriteBufferSize: 1024,
}
func main() {
http.HandleFunc("/ws", wsHandler)
http.ListenAndServe(":8080", nil)
}
func wsHandler(w http.ResponseWriter, r *http.Request) {
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Println(err)
return
}
defer conn.Close()
for {
// 从前端接收消息
_, msg, err := conn.ReadMessage()
if err != nil {
log.Println(err)
break
}
log.Printf("Received message: %s\n", msg)
// 向前端发送消息
err = conn.WriteMessage(websocket.TextMessage, []byte("Hello, client!"))
if err != nil {
log.Println(err)
break
}
}
}
在上面的代码中,我们创建了一个 /ws 的路由,用于处理 WebSocket 连接。在 wsHandler 函数中,我们首先通过 upgrader.Upgrade 函数将 HTTP 连接升级为 WebSocket 连接。然后我们通过一个 for 循环不断地接收前端发送的消息,并向前端发送消息。
在前端,我们可以使用 JavaScript 的 WebSocket API 来连接到上面的 Golang 服务器,并发送和接收消息。下面是一个简单的 JavaScript 示例代码:
const ws = new WebSocket('ws://localhost:8080/ws');
ws.onopen = () => {
console.log('Connected to server');
ws.send('Hello, server!');
};
ws.onmessage = (event) => {
console.log(`Received message: ${event.data}`);
};
在上面的代码中,我们创建了一个 WebSocket 实例,并连接到上面的 Golang 服务器。在连接成功后,我们使用 ws.send 函数向服务器发送消息,并使用 ws.onmessage 函数监听服务器发送的消息。
这样,我们就可以通过 Golang 实现主动发送消息给前端了。
原文地址: https://www.cveoy.top/t/topic/oUHE 著作权归作者所有。请勿转载和采集!