在 Gorilla 中进行一对一通信可以使用 WebSocket。WebSocket 是一种支持双向通信的协议,可以在浏览器和服务器之间建立一个持久化的连接。

以下是一个简单的例子,演示如何使用 Gorilla WebSocket 在 Go 中进行一对一通信:

package main

import (
	"log"
	"net/http"

	"github.com/gorilla/websocket"
)

var upgrader = websocket.Upgrader{
	ReadBufferSize:  1024,
	WriteBufferSize: 1024,
}

func handleWebSocket(w http.ResponseWriter, r *http.Request) {
	// Upgrade HTTP connection to WebSocket connection
	conn, err := upgrader.Upgrade(w, r, nil)
	if err != nil {
		log.Println(err)
		return
	}

	// Read messages from the client
	for {
		_, message, err := conn.ReadMessage()
		if err != nil {
			log.Println(err)
			return
		}

		log.Printf('Received message: %s\n', message)

		// Send response back to the client
		err = conn.WriteMessage(websocket.TextMessage, []byte('Hello, client!'))
		if err != nil {
			log.Println(err)
			return
		}
	}
}

func main() {
	// Serve index.html file
	http.HandleFunc('/', func(w http.ResponseWriter, r *http.Request) {
		http.ServeFile(w, r, 'index.html')
	})

	// Handle WebSocket connections
	http.HandleFunc('/ws', handleWebSocket)

	// Start server on port 8080
	log.Println('Server started on port 8080')
	err := http.ListenAndServe(':8080', nil)
	if err != nil {
		log.Fatal(err)
	}
}

在这个例子中,我们创建了一个 HTTP 服务器,并为 /ws 路径注册了一个处理函数 handleWebSocket()。当客户端连接到该路径时,服务器会将 HTTP 连接升级为 WebSocket 连接,然后开始读取来自客户端的消息。每当服务器收到一条消息时,它会将一个简单的回复发送回客户端。

客户端可以使用 JavaScript 中的 WebSocket 对象来与服务器进行通信:

const socket = new WebSocket('ws://localhost:8080/ws')

socket.addEventListener('open', function (event) {
  socket.send('Hello, server!')
})

socket.addEventListener('message', function (event) {
  console.log('Received message:', event.data)
})

在这个例子中,我们创建了一个 WebSocket 连接,然后在连接打开时发送一条消息。当服务器回复时,我们在控制台中打印出来。

需要注意的是,WebSocket 连接是持久化的,因此客户端和服务器可以在连接建立后随时发送和接收消息。这使得 WebSocket 非常适合进行实时通信,例如聊天应用程序或在线游戏。

Golang Gorilla WebSocket: 实时一对一通信指南

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

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