在Go中使用WebSocket进行实时通信通常涉及到WebSocket的客户端和服务器端的实现。这里我会给出服务器端和客户端的简单示例代码。
**一、服务器端**
在Go中,我们可以使用标准库中的`net/websocket`包来处理WebSocket连接。以下是一个简单的WebSocket服务器端示例:
```go
package main
import (
"net/http"
"net/websocket"
)
func handleConnection(ws *websocket.Conn) {
defer ws.Close() // 确保在处理完连接后关闭连接
// 这里可以添加你的逻辑来处理WebSocket消息
// 例如,你可以使用ws.ReadMessage()读取消息,然后使用ws.WriteMessage()发送消息
}
func main() {
http.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) {
ws, err := websocket.Accept(w, r)
if err != nil {
return
}
defer ws.Close() // 在整个handler完成后确保关闭连接
// 启动一个goroutine来处理连接
go handleConnection(ws)
})
// 启动HTTP服务器监听端口
http.ListenAndServe(":8080", nil) // 监听8080端口,你可以根据需要更改端口号
}
```
**二、客户端**
在客户端,你可以使用JavaScript的WebSocket API来与服务器进行通信。以下是一个简单的WebSocket客户端示例:
```html
var ws = new WebSocket("ws://localhost:8080/ws"); // 需要和你的服务器端匹配的地址和端口号
ws.onopen = function (event) {
console.log("WebSocket connected!");
// 当WebSocket打开时发送一个消息给服务器(注意协议相关的要求)
ws.send("Hello Server!");
};
ws.onmessage = function (event) {
console.log("Received message: " + event.data);
// 处理从服务器接收到的消息(这里只是简单打印)
};
ws.onclose = function (event) {
console.log("WebSocket closed");
};
ws.onerror = function (error) {
console.error("WebSocket error: " + error);
};
```
注意:在实际开发中,你可能会使用一些框架或库来简化WebSocket的创建和管理,例如Go的`gorilla/websocket`库。同时,客户端代码可能也会更复杂,包括错误处理、重连逻辑等。确保在生产环境中充分测试你的WebSocket实现。