zinx icon indicating copy to clipboard operation
zinx copied to clipboard

心跳panic

Open pingqiang806796422 opened this issue 1 year ago • 9 comments

1 2 3

pingqiang806796422 avatar Aug 19 '24 02:08 pingqiang806796422

@pingqiang806796422
Run() 有一段注释,这个代码是注释掉了,还是应该有的?

aceld avatar Aug 19 '24 02:08 aceld

目前是因为有问题,才注释掉的,正常出问题肯定是没有注释的代码

pingqiang806796422 avatar Aug 19 '24 02:08 pingqiang806796422

嗯,这个是ws 的问题,tcp的应该不会出现, https://github.com/aceld/zinx/pull/333 这个pr先merge了,看是否还能复现 @pingqiang806796422

aceld avatar Aug 19 '24 03:08 aceld

你 先拉下 master 分支,看能否还复现

aceld avatar Aug 19 '24 03:08 aceld

我们现在心跳不是双向的吗, 可以新增配置 单项吗?服务端不主动发送消息给客户端

pingqiang806796422 avatar Aug 19 '24 03:08 pingqiang806796422

@pingqiang806796422 目前还不支持单向,一旦开启就是双向,如果想只做单向处理,可以将 一方的OnRemoteNotAlive() 方法设置为不处理,忽略心跳消息。

aceld avatar Aug 19 '24 03:08 aceld

@pingqiang806796422 SetHeartbeatFunc() 可以自定义一方的心跳检测,不发送心跳包。

aceld avatar Aug 19 '24 03:08 aceld

func (h *HeartbeatChecker) check() (err error) {

	if h.conn == nil {
		return nil
	}

	if !h.conn.IsAlive() {
		h.onRemoteNotAlive(h.conn)
	} else {
		if h.beatFunc != nil {
			err = h.beatFunc(h.conn)
		} else {
			err = h.SendHeartBeatMsg()
		}
	}

	return err
}

如果设置beatFunc 则每次心跳执行beatFunc,如果不设置才会给对方发送心跳报文

aceld avatar Aug 19 '24 03:08 aceld

目前我设置了beatFunc, 前面的问题,测试不出来了,因为不会发送心跳到客户端了

pingqiang806796422 avatar Aug 21 '24 01:08 pingqiang806796422