首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.net与弹簧套接字之间的RSocket连接

.net与弹簧套接字之间的RSocket连接
EN

Stack Overflow用户
提问于 2020-01-28 16:19:53
回答 1查看 161关注 0票数 2

我尝试通过RSocket协议从.net服务向sping boot服务发送消息,连接已建立,但消息未到达目的地。在这两种情况下,.net服务器- java客户端和java服务器- .net客户端。也许有人已经设置了一个工作配置(.net - spring boot over rsocket)

字符串消息的工作配置(java服务器- .net客户端)

代码语言:javascript
复制
import io.rsocket.AbstractRSocket;
import io.rsocket.ConnectionSetupPayload;
import io.rsocket.DuplexConnection;
import io.rsocket.Payload;
import io.rsocket.RSocket;
import io.rsocket.RSocketFactory;
import io.rsocket.SocketAcceptor;
import io.rsocket.frame.decoder.PayloadDecoder;
import io.rsocket.transport.ServerTransport;
import io.rsocket.transport.netty.WebsocketDuplexConnection;
import io.rsocket.util.DefaultPayload;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import reactor.core.scheduler.Schedulers;
import reactor.netty.Connection;
import reactor.netty.DisposableServer;
import reactor.netty.http.server.HttpServer;

        ServerTransport.ConnectionAcceptor acceptor =
            RSocketFactory.receive()
                    .frameDecoder(PayloadDecoder.ZERO_COPY)
                    .acceptor(new SocketAcceptorImpl())
                    .toConnectionAcceptor();


    DisposableServer disposableServer =
            HttpServer.create()
                    .host("localhost")
                    .port(serverPort)
                    .route(
                            routes ->
                                    routes.ws(
                                            "/",
                                            (in, out) -> {
                                                DuplexConnection connection = new WebsocketDuplexConnection((Connection) in);
                                                return acceptor.apply(connection).then(out.neverComplete());
                                            }))
                    .bindNow();

class SocketAcceptorImpl implements SocketAcceptor {

    @Override
    public Mono<RSocket> accept(ConnectionSetupPayload setupPayload, RSocket reactiveSocket) {
        return Mono.just(
                new AbstractRSocket() {

                    @Override
                    public Mono<Void> fireAndForget(Payload payload) {
                        payload.release();
                        return Mono.empty();
                    }

                    @Override
                    public Mono<Payload> requestResponse(Payload payload) {
                        return Mono.just(payload);
                    }

                    @Override
                    public Flux<Payload> requestChannel(Publisher<Payload> payloads) {
                        return Flux.from(payloads).subscribeOn(Schedulers.single());
                    }

                    @Override
                    public Flux<Payload> requestStream(Payload payload) {
                        String dataUtf8 = payload.getDataUtf8();
                        return Flux.just(DefaultPayload.create("!!! " + dataUtf8 + " !!!"));
                    }
                });
    }
}
EN

回答 1

Stack Overflow用户

发布于 2021-02-12 19:20:53

对于从RSocket net客户机到RSocket spring boot Java服务器的string传输,请尝试rsocket net readerIndex exceeds writerIndex中给出的答案

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59944612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档