golang Gorilla 如何一对一通讯
在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非常适合进行实时通信,例如聊天应用程序或在线游戏。
原文地址: https://www.cveoy.top/t/topic/siJ 著作权归作者所有。请勿转载和采集!