[Golang] 从零开始写Socket Server(3): 对长、短连接的处理策略(模拟心跳)

本文介绍了如何在Golang中处理Socket Server的长、短连接,通过设置timeout确保短连接资源及时释放,针对长连接则采用心跳机制维持连接状态。在长连接处理中,当Server在指定时间内未收到Client消息则断开连接,反之则重置计时器。代码已上传至GitHub,供读者学习参考。
摘要由CSDN通过智能技术生成

    通过前两章,我们成功是写出了一套凑合能用的Server和Client,并在二者之间实现了通过协议交流。这么一来,一个简易的socket通讯框架已经初具雏形了,那么我们接下来做的,就是想办法让这个框架更加稳定,茁壮~

    作为一个可能会和很多Client进行通讯交互的Server,首先要保证的就是整个Server运行状态的稳定性,因此在和Client建立连接通讯的时候,确保连接的及时断开非常重要,否则一旦和多个客户端建立不关闭的长连接,对于服务器资源的占用是很可怕的。因此,我们需要针对可能出现的短连接和长连接,设定不同的限制策略。

    针对短连接,我们可以使用golang中的net包自带的timeout函数,一共有三个,分别是:


func (*IPConn) SetDeadline
func (c *IPConn) SetDeadline(t time.Time) error

func (*IPConn) SetReadDeadline
func (c *IPConn) SetReadDeadline(t time.Time) error

func (*IPConn) SetWriteDeadline
func (c *IPConn) SetWriteDeadline(t time.Time) error


  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值