如何使用Netty从单独的线程发送WebSocket消息?

时间:2013-09-04 19:52:18

标签: websocket netty

我正在尝试使用Netty 4.0.8创建一个相当简单的WebSocket服务器。我有基本的握手设置和工作。但是从单独的线程发送的消息似乎没有传递给客户端。

客户端/服务器交互的工作方式是客户端启动连接,然后通过WebSocket发送初始消息(“hello”)。服务器立即响应。此消息通过Chrome Dev Tools中可见。写完此消息后,我将Channel存储在ChannelGroup中。此ChannelGroup初始化如下:

this.broadcastGroup = new NioEventLoopGroup();
this.group = new DefaultChannelGroup("websocket", broadcastGroup.next());

然后添加Channel,如下所示:

group.add(ctx.channel());

在一个单独的线程(在Netty之外创建)中,我这样做:

group.write(new TextWebSocketFrame("text"));

但是,此消息从未出现在Chrome开发工具中。

我已经尝试过调试,我可以看到,当调用group.write()时,原始的Channel就在群组中,但这就是我所能得到的。

2 个答案:

答案 0 :(得分:0)

检查返回的ChannelFuture ..很可能是写入的ChannelFuture失败了。也许你是在握手完成之前写的?

答案 1 :(得分:0)

没关系。事实证明,我忽略了调用group.flush()