1. 创建 WebSocket 服务器:
首先,你需要创建一个 WebSocket 服务器。在 GoFrame 中,可以使用 ghttp 包来创建服务器。以下是一个简单的例子:
package main
import (
"fmt"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/net/ghttp"
"github.com/gogf/gf/net/gwebsocket"
)
func main() {
s := g.Server()
// 创建WebSocket服务器
s.BindHandler("/ws", func(r *ghttp.Request) {
// 将HTTP连接升级为WebSocket连接
conn, _, _, err := gwebsocket.NewWebSocket(r.Response, r.Request)
if err != nil {
fmt.Println(err)
return
}
// 处理WebSocket连接
for {
message, err := conn.ReadMessage()
if err != nil {
fmt.Println(err)
break
}
// 处理接收到的WebSocket消息
fmt.Printf("Received message: %s\n", message)
// 回复消息
if err := conn.WriteMessage(gwebsocket.MessageText, []byte("Hello, WebSocket!")); err != nil {
fmt.Println(err)
break
}
}
})
s.Run()
}
上述代码创建了一个简单的 WebSocket 服务器,当有客户端连接到 /ws 路由时,会将 HTTP 连接升级为 WebSocket 连接,并在循环中处理收到的消息。
2. 客户端连接 WebSocket:
你可以使用 JavaScript 或其他语言中的 WebSocket 客户端来连接到你的 GoFrame WebSocket 服务器。以下是一个简单的 JavaScript 客户端示例:
<!DOCTYPE html>
<html>
<head>
<title>WebSocket Example</title>
</head>
<body>
<script>
const socket = new WebSocket("ws://localhost:8080/ws");
socket.onopen = function (event) {
console.log("WebSocket connection opened:", event);
// 发送消息到服务器
socket.send("Hello, server!");
};
socket.onmessage = function (event) {
console.log("Received message from server:", event.data);
};
socket.onclose = function (event) {
console.log("WebSocket connection closed:", event);
};
</script>
</body>
</html>
在这个例子中,JavaScript 客户端通过 new WebSocket("ws://localhost:8080/ws") 连接到 GoFrame WebSocket 服务器,并在连接成功后发送消息。当服务器回复消息时,客户端通过 onmessage 事件处理函数处理接收到的消息。
这是一个简单的示例,实际上,你可以根据具体需求扩展 WebSocket 服务器和客户端的功能。WebSocket 在实时通信领域有着广泛的应用,适用于聊天、实时数据推送、在线游戏等场景。
转载请注明出处:http://www.zyzy.cn/article/detail/7866/GoFrame