编写main文件代码,并运行
package main
import (
"log"
"net/http"
"github.com/gorilla/websocket"
)
var upgrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool { return true },
}
func wsHandler(w http.ResponseWriter, r *http.Request) {
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Println("无法升级连接为 WebSocket:", err)
return
}
defer conn.Close()
for {
// 读取客户端发送的消息
_, msg, err := conn.ReadMessage()
if err != nil {
log.Println("读取消息失败:", err)
break
}
// 在服务端打印接收到的消息
log.Printf("收到消息: %s\n", msg)
// 发送响应给客户端
err = conn.WriteMessage(websocket.TextMessage, []byte("已收到消息"))
if err != nil {
log.Println("发送响应失败:", err)
break
}
}
}
func main() {
http.HandleFunc("/ws", wsHandler)
log.Println("WebSocket 服务器启动,监听在 :8000 端口")
err := http.ListenAndServe(":8000", nil)
if err != nil {
log.Fatal("启动服务器失败:", err)
}
}
在浏览器的控制台写入以下代码
var socket = new WebSocket("ws://localhost:8000/ws");
socket.addEventListener("open", function(event) {
console.log("已连接到服务器");
// 发送消息给服务端
socket.send("Hello, WebSocket!");
});
socket.addEventListener("message", function(event) {
console.log("收到响应: " + event.data);
});
socket.addEventListener("close", function(event) {
console.log("连接已关闭");
});
出现以下内容说明连接成功
浏览器控制台:
golang编译器(idea)控制台: