WebSocket在gin中的使用—实现群聊和私聊

本文介绍了WebSocket的基本概念,强调其在实时通信中的优势,并展示了如何在Gin框架中利用WebSocket实现群聊和私聊功能,包括建立连接、接收和发送消息以及广播机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是WebSocket?

WebSocket是一种在客户端和服务器之间建立持久性连接的通信协议,它允许客户端和服务器之间进行全双工通信。

为什么使用WebSocket?

  1. WebSocket 允许服务器主动向客户端推送数据,同时也支持客户端向服务器发送数据。
  2. WebSocket 在客户端和服务器之间建议一次连接后,将保持持久性的连接,避免了像HTTP协议中的每次请求都需要建立和断开连接的开销。
  3. WebSocket是基于TCP协议的,通信延迟性较低,适用于实时性要求比较高的场景。

在gin中如何用WebSocket实现群聊和私聊?

实现群聊还是私聊的关键在于消息发送给谁,如果发送给所有人就是最大的广播了,如果发送给指定人,就实现了私聊还是群聊。
就比如我们建一个群,群里6个人,我们获取到那5个人的id,然后将自己发送的消息,指定给他们接收,那就可以实现群聊了。如果一对一聊天,那我们只用获取到对方一个人的id就行了。

1. 建立WebSocket连接

先建立一个map集合,用来存储所有连接信息。

var clients = make(map[int]*websocket.Conn)

建立一个互斥锁,保证对 clients 的并发安全访问。

var clientMutex sync.Mutex

然后可以使用 websocket.Upgrade() 函数将当前HTTP请求升级为WebSocket连接。
同时也要获取到当前用户id,为了后面实现私聊的功能。
然后将连接的信息添加到map集合中。

func WebSocketHandler(c *gin.Context) {
   
	userID, err := strconv.Atoi(c.Query("userID")) 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值