在 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 实现主动发送消息给前端了。

Golang 实现主动发送消息给前端 - WebSocket 技术详解

原文地址: https://www.cveoy.top/t/topic/oUHE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录