如何在Gin框架中使用Websocket?

在Gin框架中使用Websocket,你需要使用一个第三方库,例如github.com/gorilla/websocket。以下是一个基本的示例,展示了如何在Gin中设置一个Websocket服务器:

首先,你需要安装gorilla/websocket包,你可以使用以下命令进行安装:

bash 复制代码
go get github.com/gorilla/websocket

然后,你可以创建一个新的Gin路由,并将其绑定到一个Websocket处理函数上:

go 复制代码
package main

import (
	"github.com/gin-gonic/gin"
	"github.com/gorilla/websocket"
	"net/http"
)

var upgrader = websocket.Upgrader{
	ReadBufferSize:  1024,
	WriteBufferSize: 1024,
	CheckOrigin: func(r *http.Request) bool {
		return true
	},
}

func main() {
	r := gin.Default()

	r.GET("/ws", func(c *gin.Context) {
		handleWebsocket(c.Writer, c.Request)
	})

	r.Run(":8080")
}

func handleWebsocket(w http.ResponseWriter, r *http.Request) {
	conn, err := upgrader.Upgrade(w, r, nil)
	if err != nil {
		return
	}
	defer conn.Close()

	for {
		messageType, p, err := conn.ReadMessage()
		if err != nil {
			return
		}
		if err := conn.WriteMessage(messageType, p); err != nil {
			return
		}
	}
}

在这个例子中,我们创建了一个新的Gin路由/ws,当客户端向这个路径发送GET请求时,我们的服务器就会将这个HTTP连接升级为一个Websocket连接。然后,我们进入一个无限循环,不断地从Websocket连接中读取消息,然后将这个消息原样写回。这就是一个最基本的Websocket回声服务器。

你可以根据你的需求修改handleWebsocket函数,例如,你可以在接收到消息时调用你的业务逻辑函数,而不是简单地将消息原样写回。

相关推荐
GoFly开发者4 小时前
GoFly 社区 GMQT|国产自研 MQTT‑Broker,打造私有化物联网消息底座
物联网·mqtt·golang·mqtt broker·mqtt私有化部署
奈斯先生Vector5 小时前
2026 AIGC API 网关韧性评测:为什么 HTTP 200 不等于有效交付
网络协议·http·aigc
sunywz6 小时前
【从零搭建物联网智能充电桩系统】4、Netty WebSocket 服务:小程序实时推送背后的长连接管理
物联网·websocket·小程序
刘步权6 小时前
KY-RTI分布仿真技术:第十四章 Go程序设计
golang·hla·rti·高层体系结构·多语言仿真
拾光Ծ7 小时前
【Linux网络】深入理解网络层:从IP协议格式,子网划分到NAT与路由机制
linux·网络·网络协议·tcp/ip·计算机网络
microrain14 小时前
从数据烟囱到融合中心:SagooIoT统一数据处理平台的设计实践
物联网·golang·开源·sagooiot
DLYSB_18 小时前
API 网关流量洪峰与突发 CC 攻击:我用 Go 写了个“现场物理防御哨兵”,把故障响应压缩到秒级
开发语言·后端·golang·报警灯
全麦面包 time展天19 小时前
瀚海拾贝(一)HTTP协议/IIS 原理及ASP.NET运行机制浅析【图解】
网络协议·http·asp.net
微硬创新19 小时前
耐达讯自动化16路0-20mA转PROFINET协议转换模块技术说明
人工智能·网络协议·自动化·信息与通信
朋克洛德的码农21 小时前
反射是什么?
golang