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



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

客户端

/服务器交互的工作方式是客户端启动连接,然后通过 WebSocket 发送初始消息("hello")。服务器会立即响应。此消息会显示在 Chrome 开发者工具中。写入此消息后,我将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在组中,但这是我所能得到的。

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

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

相关内容

  • 没有找到相关文章

最新更新