Golang Websocket 通讯
以下是一个简单的Go语言Websocket通讯的示例代码。这个例子中,服务器端会接收客户端发送的消息,并将其回传给客户端。
package main
import (
"fmt"
"log"
"net/http"
"github.com/gorilla/websocket"
)
var upgrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool {
return true // 允许跨域请求
},
}
func echo(w http.ResponseWriter, r *http.Request) {
c, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Println(err)
return
}
defer c.Close()
for {
mt, message, err := c.ReadMessage()
if err != nil {
log.Println(err)
break
}
err = c.WriteMessage(mt, message)
if err != nil {
log.Println(err)
break
}
}
}
func main() {
http.HandleFunc("/echo", echo)
fmt.Println("Starting server on :8080")
log.Fatal(http.ListenAndServe(":8080", nil))
}
在这个例子中,我们使用了gorilla/websocket
包来处理Websocket请求。服务器端在/echo
路径上接收Websocket连接,并将接收到的消息原样发送回客户端。
要运行这个服务器,请将代码保存到一个.go
文件中,然后通过go run
命令来启动它。服务器将在8080端口监听Websocket连接。
客户端的代码实现将取决于你的应用场景,但一个简单的JavaScript客户端示例可能如下所示:
<!DOCTYPE html>
<html>
<head>
<title>WebSocket Echo Client</title>
</head>
<body>
<script>
var ws = new WebSocket("ws://localhost:8080/echo");
ws.onopen = function(evt) {
console.log("Connection open ...");
};
ws.onmessage = function(evt) {
console.log("Received Message: " + evt.data);
};
ws.onclose = function(evt) {
console.log("Connection closed.");
};
ws.onerror = function(evt) {
console.error("Error occured: " + evt.data);
};
function sendMessage() {
var message = document.getElementById('message').value;
ws.send(message);
}
</script>
<input type="text" id="message" value="Hello, WebSocket!">
<button onclick="sendMessage()">Send Message</button>
</body>
</html>
在这个HTML页面中,我们创建了一个Websocket连接到ws://localhost:8080/echo
,并提供了一个文本输入框和一个按钮来发送消息。当用户点击按钮时,sendMessage
函数会被调用,该函数将文本框中的值通过Websocket发送到服务器。服务器会原样返回这个消息,客户端JavaScript代码会在控制台打印出接收到的消息。
评论已关闭