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

博客作者分享了他们在使用Undertow构建WebSocket服务器时遇到的问题,即如何按需向所有已连接的客户端广播消息,而不依赖于接收到的消息触发。他们希望找到一个方法,能够直接调用server.send()来向所有客户端发送消息,而不是手动维护客户端列表。目前的实现是通过onFullTextMessage事件处理程序来广播消息,但作者寻找更简洁的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是我当前的 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手动跟踪所有内容并发送给每个客户端的想法。当然,我忽略了某个地方的方法?

如果这不是不可能的事情,我将不胜感激!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值