我正在尝试使用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
就在群组中,但这就是我所能得到的。
答案 0 :(得分:0)
检查返回的ChannelFuture ..很可能是写入的ChannelFuture失败了。也许你是在握手完成之前写的?
答案 1 :(得分:0)
没关系。事实证明,我忽略了调用group.flush()