2015-02-07 209 views
0

如何使用Netty從服務器向客戶端發送消息? 我知道你可以做到像Netty IO向客戶端發送消息

for (Channel c : channels1) { 
    c.writeAndFlush("TEXT \r\n"); 
    } 

,但它是從ChatServerHandler類中唯一可用的。有沒有將消息發送到客戶端的方法或我怎樣才能使我可以調用諸如例如

sendMessageToServer("MESSAGE"); 

void sendMessageToServer(String message) { 
final ChannelGroup channels = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE); 
     for (Channel c : channels) { 
     c.writeAndFlush("TEXT \r\n"); 
     } 
} 

的方法?如果我使用

final ChannelGroup channels = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE); 

獲得渠道,如在ChatServerHandler我得到的0

回答

0

final ChannelGroup channels = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE);
這構建了一個新的ChannelGroup什麼也沒有內部的通道大小。

你應該有一個課程延伸SimpleChannelInboundHandler<?>
當連接某些東西時會調用channelActive(ChannelHandlerContext chc)方法。只需將Channel實例添加到您的channels通過channels.add(chc.channel());
您可能必須將您的ChannelGroup公開,以便它可以無處不在。祝你好運。

+0

我已經有了channelAdded方法,並且我將這些通道添加到了組中,並且在客戶端連接後組的大小爲1,但是我不知道如何使用它來獲取發送消息的通道。 ChannelGroup無法從外部訪問,因爲我得到一個靜態錯誤或類似的東西。 – Broadwell 2015-02-07 17:26:44

+0

這就是我所說的。你需要公開你的ChannelGroup。試着讓它成爲'public static',這樣你就可以直接訪問它。 '公共靜態ChannelGroup通道=新的DefaultChannelGroup(GlobalEventExecutor.INSTANCE);' – Jeremy 2015-02-08 09:48:59

相關問題