這是我當前的 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);
});
添加回答
舉報
0/150
提交
取消