为了账号安全,请及时绑定邮箱和手机立即绑定

如何向连接到 Undertow websocket 服务器的所有客户端广播消息?

如何向连接到 Undertow websocket 服务器的所有客户端广播消息?

呼啦一阵风 2021-06-07 16:59:30
这是我当前的 Undertow websocket 服务器设置:    Undertow server = Undertow.builder()            .addHttpListener(8080, "localhost")            .setHandler(path()                    .addPrefixPath("/", websocket((exchange, channel) -> {                        channel.getReceiveSetter().set(new AbstractReceiveListener() {                            @Override                            protected void onFullTextMessage(WebSocketChannel channel, BufferedTextMessage message) {                                final String messageData = message.getData();                                for (WebSocketChannel session : channel.getPeerConnections()) {                                    WebSockets.sendText(messageData, session, null);                                }                            }                        });                        channel.resumeReceives();                    }))).build();这是从他们的演示文件之一复制的。我相信onFullTextMessage这里会向所有客户端广播它收到的任何消息。我希望能够按需触发这种行为。因此,不必接收消息并使用事件处理程序发送更多消息,我希望能够任意执行server.send()并向所有连接的客户端发送消息。我环顾四周,没有发现任何似乎能够实现这一目标的东西。我不喜欢WebSocketChannels手动跟踪所有内容并发送给每个客户端的想法。当然,我忽略了某个地方的方法?如果这不是不可能的事情,我将不胜感激!
查看完整描述

1 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

您可以通过获取与此运河的所有连接并发送消息来向通道上的所有客户端广播消息:


channel.getPeerConnections().forEach(connection -> {

    WebSockets.sendText(messageData, connection, null);

});


查看完整回答
反对 回复 2021-06-17
  • 1 回答
  • 0 关注
  • 303 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信