Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
ufiredong opened this issue Jan 26, 2021 · 8 comments
Open

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

ufiredong opened this issue Jan 26, 2021 · 8 comments

Comments

@ufiredong
Copy link

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

@YeautyYE
Copy link
Owner

YeautyYE commented Feb 3, 2021

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

@zyliu1985
Copy link

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

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

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

谢谢!

@HantaoCai
Copy link

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

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

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

谢谢!

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

@YeautyYE
Copy link
Owner

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

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

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

谢谢!

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

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

@HantaoCai
Copy link

HantaoCai commented May 17, 2022

相关问题: 请问可以在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 将会触发重连逻辑。

@YeautyYE
Copy link
Owner

相关问题: 请问可以在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,会纳入下个版本

@fzdwx
Copy link

fzdwx commented Jun 8, 2022

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

@HantaoCai
Copy link

HantaoCai commented Jun 9, 2022

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants