0

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

客户端/服务器交互的工作方式是客户端启动连接,然后通过 WebSocket 发送初始消息(“hello”)。服务器立即响应。此消息通过并在 Chrome 开发工具中可见。写完此消息后,我将其存储ChannelChannelGroup. 这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的在组中,但这是我能得到的。

4

2 回答 2

0

没关系。原来问题是我忽略了打电话group.flush()

于 2013-09-05T18:02:52.090 回答
0

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

于 2013-09-05T09:41:54.740 回答