2016-11-08 105 views
0

我需要讓我的websocket優雅地關閉。首先發送所有在緩衝區中等待的消息,然後關閉。Netty websocket優雅地關閉

channel.flush(); 
channel.close(); 

似乎不正確,因爲我沒有任何完成處理程序的flush方法來完成後關閉。

有沒有辦法做到這一點。 Netty使用:4.1.0.Beta3

回答

2

你可以使用的技巧是寫一個空的緩衝區,然後附加一個偵聽器到那個調用。 Unpooled.EMPTY_BUFFER可以使這很容易。

channel.writeAndFlush(Unpooled.EMPTY_BUFFER).addListener(... 
    channel.close(); 
)}; 

如果你想要做的就是關閉沖洗後的通道,那麼你可以使用ChannelFutureListener.CLOSE簡化代碼。

channel.writeAndFlush(Unpooled.EMPTY_BUFFER).addListener(ChannelFutureListener.CLOSE); 

如果你這樣做往往不夠,那麼你可能需要編寫一個靜態輔助方法like the Netty examples do