首页 > 解决方案 > 如何通过 Spring Webflux 中的 websockets 向特定客户端发送消息?

问题描述

我是春季 webflux 的新手。我想在春天实现 websocket 应用程序。有人可以帮我吗,我如何在所有连接的客户端中向特定客户端发送消息。

服务器代码

private void serverLogic(WebSocketSessionHandler sessionHandler, long interval)
{
    sessionHandler
        .connected()
        .subscribe(session -> logger.info("Client Connected [{}]", session.getId()));

    sessionHandler
        .disconnected()
        .subscribe(session -> logger.info("Client Disconnected [{}]", session.getId()));

    Flux<String> receiveAll =
        sessionHandler
            .receive()              
            .subscribeOn(Schedulers.elastic())
            .doOnNext(message -> logger.info("Server Received: [{}]", message));

    Mono<String> receiveFirst =
        sessionHandler
            .receive()
            .subscribeOn(Schedulers.elastic())
            .next();


    //This module is sending data to all the clients that are connected. How do I alter this one?

    Flux<String> send =
        Flux
            .interval(Duration.ofMillis(interval))
            .subscribeOn(Schedulers.elastic())              
            .takeUntil(value -> !sessionHandler.isConnected())
            .map(value -> Long.toString(value))
            .doOnNext(message -> sessionHandler.send(message))
            .doOnNext(message -> logger.info("Server Sent: [{}]", message));

    receiveAll.subscribe();
    receiveFirst.thenMany(send).subscribe();
}

标签: springwebsocketspring-webflux

解决方案


推荐阅读