gpt4 book ai didi

spring - CORS 和 Spring Websocket

转载 作者:行者123 更新时间:2023-12-03 23:17:35 25 4
gpt4 key购买 nike

我已关注 this tutorial构建一个服务于 websockets 的 Spring Boot 应用程序连接,但我无法从 Spring Boot 本身提供的客户端之外的其他客户端连接到这些 websocket。

complete directory in the GitHub repository that accompanies the tutorial包含最终的 Spring Boot 代码。我拿了index.htmlapp.js文件并创建了另一个在 Node.js 服务器上运行的客户端。之后,我将连接字符串替换为指向 localhost:8080 (Spring Boot 运行的地方)。然后我运行 Node.js 服务器并尝试使用 websockets,但它不起作用。

添加 .setAllowedOrigins("*") 很容易解决第一个问题。到 StompEndpointRegistry注册表。使用此配置,我设法连接到 websocket,但现在我再也没有从套接字收到消息。

我不知道我错过了什么......有谁知道是什么问题?

提取的 index.htmlapp.js (重命名为 index.js )文件,以及 the Node.js server can be found here用于测试目的。要运行它,只需安装依赖项( npm install )然后发出 npm start .服务器将响应 http://localhost:3000/ .

最佳答案

实际上这个问题/问题很愚蠢。问题是,当我将 HTML/JS 文件提取到外部应用程序时,我将代码中的所有硬编码三点更改为 http://localhost:8080/... :

var socket = new SockJS('http://localhost:8080/gs-guide-websocket');
// ...
stompClient.subscribe('http://localhost:8080/topic/greetings', cb);
// ...
stompClient.send("http://localhost:8080/app/hello", ...);

我应该改变的唯一一行是第一行。其他两个只是 subscribe 的函数和 send消息到已经打开的套接字上的主题。因此,他们不需要 URL 作为前缀......
var socket = new SockJS('http://localhost:8080/gs-guide-websocket');
// ...
stompClient.subscribe('/topic/greetings', cb);
// ...
stompClient.send("/app/hello", ...);

关于spring - CORS 和 Spring Websocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47239476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com