netty-websocket-spring-boot-starter icon indicating copy to clipboard operation
netty-websocket-spring-boot-starter copied to clipboard

关于主动关闭socket连接的想法

Open ufiredong opened this issue 4 years ago • 8 comments

@onClose 是监听关闭事件的,,, 我们能否在 服务端 实现主动关闭连接, 而client端的 ws.close 方法是客户端的主动关闭。

ufiredong avatar Jan 26 '21 06:01 ufiredong

服务端用session.close()就可以了

YeautyYE avatar Feb 03 '21 02:02 YeautyYE

服务端用session.close()就可以了

关于异常中断重连请教2个问题: 背景: ws连接偶尔会与服务端发生异常断开,所以业务上增加了重试机制。但当业务场景结束后,服务端主动close后,不希望客户端再重连上来。 问题:

  1. 客户端是否能感知到session断开是网络异常,还是服务端主动关闭的?
  2. 服务端在调用close的时候,是否可以指定CloseEvent?这样客户端就可以在收到这个CloseEvent后不进行重连。

谢谢!

zyliu1985 avatar May 05 '22 12:05 zyliu1985

服务端用session.close()就可以了

关于异常中断重连请教2个问题: 背景: ws连接偶尔会与服务端发生异常断开,所以业务上增加了重试机制。但当业务场景结束后,服务端主动close后,不希望客户端再重连上来。 问题:

  1. 客户端是否能感知到session断开是网络异常,还是服务端主动关闭的?
  2. 服务端在调用close的时候,是否可以指定CloseEvent?这样客户端就可以在收到这个CloseEvent后不进行重连。

谢谢!

这个有方案么 , 目前服务端调用close() 客户端收到的code为1006, 想要区分这块的code. 谢谢

HantaoCai avatar May 17 '22 07:05 HantaoCai

服务端用session.close()就可以了

关于异常中断重连请教2个问题: 背景: ws连接偶尔会与服务端发生异常断开,所以业务上增加了重试机制。但当业务场景结束后,服务端主动close后,不希望客户端再重连上来。 问题:

  1. 客户端是否能感知到session断开是网络异常,还是服务端主动关闭的?
  2. 服务端在调用close的时候,是否可以指定CloseEvent?这样客户端就可以在收到这个CloseEvent后不进行重连。

谢谢!

这个有方案么 , 目前服务端调用close() 客户端收到的code为1006, 想要区分这块的code. 谢谢

客户端自己调用close自己知道,不需要判断code。 另外,客户端怎么实现,服务端也没办法控制

YeautyYE avatar May 17 '22 10:05 YeautyYE

相关问题: 请问可以在OnClose里获取close状态码吗

这份code代码应该是websocket的规范定义, 从导入的依赖中能找到一个类也同样记录了这个code: javax.websocket.CloseReason image

目前引入本仓库框架, 业务逻辑处理后, 主动调用session.close() 方法, 但该方法没有办法去指定code。 而客户端被断开后调用onclose() 就会看到e的代码默认代码1006 -> 异常断开 image

ps: 客户端的包:
"dependencies": { "faye-websocket": "^0.11.4" }

期望: 因为服务端已经做了相应的逻辑处理。期望给客户端返回的code 为1000 正常断开,如果1006 将会触发重连逻辑。

HantaoCai avatar May 17 '22 11:05 HantaoCai

相关问题: 请问可以在OnClose里获取close状态码吗

这份code代码应该是websocket的规范定义, 从导入的依赖中能找到一个类也同样记录了这个code: javax.websocket.CloseReason image

目前引入本仓库框架, 业务逻辑处理后, 主动调用session.close() 方法, 但该方法没有办法去指定code。 而客户端被断开后调用onclose() 就会看到e的代码默认代码1006 -> 异常断开 image

ps: 客户端的包: "dependencies": { "faye-websocket": "^0.11.4" }

期望: 因为服务端已经做了相应的逻辑处理。期望给客户端返回的code 为1000 正常断开,如果1006 将会触发重连逻辑。

目前没支持code,会纳入下个版本

YeautyYE avatar May 18 '22 02:05 YeautyYE

这个其实可以用session.channel().writeAndFlush(new CloseWebSocketFrame(status)).addListener(Netty.close)

fzdwx avatar Jun 08 '22 13:06 fzdwx

谢谢建议 session.channel().writeAndFlush(new CloseWebSocketFrame(NORMAL_CLOSURE)).addListener((ChannelFutureListener.CLOSE));

HantaoCai avatar Jun 09 '22 09:06 HantaoCai