无法使用STOMP协议在STOMPjs和Java Websocket之间建立连接

问题描述 投票:0回答:1

我遵循了this关于Websockets的Spring Boot教程,实现了STOMP协议,该协议本身可以完美运行。我想将它连接到使用 Expo 的前端应用程序,所以我使用 STOMPjs

设置客户端并连接后,出现错误:

{"isTrusted": false, "message": "Failed to connect to localhost/127.0.0.1:8080"}
,因此我无法与后端建立连接。

我的后端与指南完全一样:

WebSocketConfig.java

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic");
        config.setApplicationDestinationPrefixes("/app");
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/ws");
    }
}

stompClient.ts

import { Client } from "@stomp/stompjs"
import 'text-encoding-polyfill';

export const stompClient = new Client({
    brokerURL: "ws://localhost:8080/ws",
    debug: (str) => {
        console.log(str);
    },
    onConnect(frame) {
        console.log("connected");
    },
    onStompError(error) {
        console.log(`stompError: ${error}`);
    },
    onWebSocketError(error) {
        console.log(error);
    },
    onDisconnect() {
        console.log("DISCONNECT");
    },
    reconnectDelay: 5000,
    heartbeatIncoming: 4000,
    heartbeatOutgoing: 4000
})

stompClient.activate()

与我类似的三个开放 GitHub 问题中的两个尚未得到解答或更新 OP

  1. 连接成功后仍看到重试
  2. React Native 上的连接不断关闭

这个有一个对我不起作用的响应(将

stompVersions
添加到客户端实例) 3. 无法在 React Native 中工作

stomp spring-websocket java-websocket stompjs
1个回答
0
投票

必须将brokerUrl中的

localhost
更改为实际IP地址

export const stompClient = new Client({
    brokerURL: "ws://YOUR_IP_ADDRESS:8080/ws",
    ...
})

© www.soinside.com 2019 - 2024. All rights reserved.