簡體   English   中英

Netty:正確關閉WebSockets

[英]Netty: Closing WebSockets correctly

如何從服務器端正確關閉WebSocket通道/連接? 如果我使用一個ctx.getChannel().close()時, onerror在Brwoser(火狐9)被拋出:

頁面加載時與ws:// localhost:8080 / websocket的連接中斷

我還嘗試在WebSocketServerHandlerchannelClosed方法內發送一個CloseWebSocketFrame

public void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e)
        throws Exception {
    CloseWebSocketFrame close = new CloseWebSocketFrame();
    ctx.getChannel().write(close);
}

這將引發ClosedChannelException (可能與有關?)。

您必須這樣做:

ch.write(new CloseWebSocketFrame());

服務器將關閉連接。 如果連接關閉不夠快,則可以調用ch.close()

怎么樣

ctx.getChannel().write(new CloseWebSocketFrame()).addListener(ChannelFutureListener.CLOSE);

那應該發送CloseWebSocketFrame,然后在那之后關閉通道。

您使用什么版本?

您是否嘗試過這樣做:

ctx.getChannel().write(ChannelBuffers.EMPTY_BUFFER).addListener(ChannelFutureListener.CLOSE);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM