go websocket 单聊 推送(群聊)实现

直接上代码了

在main方法里进行端口监听

在server包实现具体逻辑,首先定义3个结构体

分别是所有客户端管理者(申明了有两个map 这两个map分别是绑定的是所有客户端连接,和单个客户端连接),后面两个分别是单个客户端和上传数据类型

接下来就是具体的实现逻辑

这只是一个demo示例,其中只开了一个read不断读取的协程,没有开启write协程,让他们通过管道来通信,没有利用到go高并发的优势,但是这样一方面也能防止通道阻塞。代码写的很一般,比如没有代码分层,switch都写在一起了,按理说至少还能抽出来一个processData。。总而言之 这只是个简单的demo

具体效果

 

如果关闭chatroom,服务器端会自动删除两个map 的中,推送的时候会提示没有发现client..

综上,这只是一个demo ,很多细节没有考虑,具体实际场景也有很大差异。。连最基本的redis 和mysql 都没用到,比如消息要留档,已读未读 可能需要开启一个goroutine 去入库,如果是群聊 可能还需要一个群id,这个群id下面可能还需要维护多个client 等等

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值