Netty IO向客户端发送消息
问题描述:
如何使用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
答
final ChannelGroup channels = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE);
这构建了一个新的ChannelGroup
什么也没有内部的通道大小。
你应该有一个课程延伸SimpleChannelInboundHandler<?>
。
当连接某些东西时会调用channelActive(ChannelHandlerContext chc)
方法。只需将Channel
实例添加到您的channels
通过channels.add(chc.channel());
您可能必须将您的ChannelGroup
公开,以便它可以无处不在。祝你好运。
我已经有了channelAdded方法,并且我将这些通道添加到了组中,并且在客户端连接后组的大小为1,但是我不知道如何使用它来获取发送消息的通道。 ChannelGroup无法从外部访问,因为我得到一个静态错误或类似的东西。 – Broadwell 2015-02-07 17:26:44
这就是我所说的。你需要公开你的ChannelGroup。试着让它成为'public static',这样你就可以直接访问它。 '公共静态ChannelGroup通道=新的DefaultChannelGroup(GlobalEventExecutor.INSTANCE);' – Jeremy 2015-02-08 09:48:59