Giter Site home page Giter Site logo

Comments (4)

troyzhxu avatar troyzhxu commented on August 20, 2024

此时,说明连接已经断开,而 onDisconnected 回调 已经 或 正在 或 即将 在另外一个线程里 被执行

from okhttps.

fanchw avatar fanchw commented on August 20, 2024

配置心跳后,关闭服务端,没有触发任何回调。

服务端配置:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
    public static final String END_POINT = "stomp-kafka";

    public static final String BROKER_PREFIX = "/kafka";

    private static final long HEAR_BEAT_MILLS = 5000L;

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint(END_POINT).setAllowedOrigins("*").withSockJS();
        registry.addEndpoint("ok-https");
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        final ThreadPoolTaskScheduler heartBeatPool = new ThreadPoolTaskScheduler();
        heartBeatPool.setPoolSize(1);
        heartBeatPool.setThreadNamePrefix("stomp-heart-beat-");
        heartBeatPool.initialize();
        registry.enableSimpleBroker(BROKER_PREFIX)
                .setHeartbeatValue(new long[]{HEAR_BEAT_MILLS, HEAR_BEAT_MILLS})
                .setTaskScheduler(heartBeatPool)
        ;
        registry.setApplicationDestinationPrefixes("/server");
    }

客户端配置:

    @Bean
    public Stomp okHttps(StompConfigEntity stompConfigEntity) {
        final Stomp stomp = Stomp.over(OkHttps.webSocket(stompConfigEntity.getUrl()).heatbeat(5, 5));
        stomp.setOnConnected(data -> {
                    log.info("Stomp Connected {}", data);
                    subscribe(stompConfigEntity.getTopics(), data);
                })
                .setOnDisconnected(data -> {
                    log.info("Stomp Disconnected {}", data);
                    didSubscribe = false;
                    stomp.connect();
                })
                .setOnError(data -> log.info("Error : {}", data))
                .setOnException(data -> {
                    log.warn("Exception!", data);
                    didSubscribe = false;
                    stomp.connect();
                });
        stomp.connect();
        return stomp;
    }

    private void subscribe(List<String> topics, Stomp stomp) {
        if (this.didSubscribe) {
            return;
        }
        this.didSubscribe = true;
        for (String topic : topics) {
            stomp.subscribe(topic, null, message -> log.info("Subscribe Handler : {}", message.getPayload()));
        }
    }

请问服务端和客户端这样的心跳配置正确吗?

from okhttps.

troyzhxu avatar troyzhxu commented on August 20, 2024

OnConnected 回调有执行吗?如果没有,说明根本没有连上这个服务器,可以尝试把 withSockJS 去掉试试

from okhttps.

fanchw avatar fanchw commented on August 20, 2024

OnConnected 回调有执行吗?如果没有,说明根本没有连上这个服务器,可以尝试把 withSockJS 去掉试试

回调执行了 我开放了两个endpoint 一个是withJs的 另一个是没有

from okhttps.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.