gpt4 book ai didi

java - 在 Microsoft Azure Web 应用程序服务(而非 VM)上将 Websockets 与 Java Tomcat 结合使用

转载 作者:行者123 更新时间:2023-11-28 23:26:53 26 4
gpt4 key购买 nike

有人设法使用 Tomcat 在 Microsoft Azure WebApp-Service 上运行 Websockets 吗?我尝试运行Tomcat 7 chat-application-example ,但我无法连接到 Websocket 端点。我总是收到这样的消息:

WebSocket connection to 'ws://mywebapp.azurewebsites.net/websocket-example/websocket/chat' failed: Error during WebSocket handshake: Unexpected response code: 404

在本地运行时一切正常。在本地和 Azure 上,我将 Tomcat 7 与 Java 7(32 位)一起使用,并在 Azure 应用程序设置中启用了 Websocket 选项,如所述 here .

要让 Websockets 通过 Java WebApp 在 Azure 上运行,我还需要做什么?

Azure 上的 Websockets 只能与 Node.js 和 ASP.NET 配合使用吗?

更新:

Websockets 正在 Azure 上与 Tomcat 配合使用!您必须确保在 Azure 门户中启用了 Websockets,并且您选择了编译 .war 文件所针对的正确 Java、Tomcat 和 Plattform 版本。除此之外,您还必须确保您的 ServerEndpoints 已按照描述正确加载 here !

最佳答案

我在为运行 tomcat 9 web 服务器设置的 azure web 应用程序配置 websocket 连接时也遇到问题。我在这里添加这个答案,因为这个页面是我在各种搜索中得到的第一个谷歌结果。

我的问题是,像 websockets 这样的异步请求不起作用,并且网络服务器会告诉我需要为所有过滤器和 servlet 启用异步支持。 (对于 websockets,当重新启动后第一次调用网站时,我只能在浏览器开发工具的网络选项卡上看到此消息)

我发现需要在应用程序 web.xml 中配置以下过滤器以支持异步。仅当您为 Web 服务配置身份验证时,可能才需要 EasyAuth。

<filter>
<filter-name>EasyAuthFilter</filter-name>
<filter-class>com.microsoft.azure.appservice.EasyAuthFilter</filter-class>
<async-supported>true</async-supported>
</filter>

<filter>
<filter-name>AppServiceFilter</filter-name>
<filter-class>com.microsoft.azure.appservice.filters.AppServiceFilter</filter-class>
<async-supported>true</async-supported>
</filter>

这些过滤器并不明显,因为它们是微软在tomcat服务器安装目录下的web.xml中添加的,但缺少<async-supported>标签。您可以使用 kudu ssh 检查安装文件夹中的 web.xml 并导航到/usr/local/tomcat/config。由于您无法更改安装目录中的文件(应用程序重新启动时它将被覆盖),因此您需要在应用程序的 web.xml 中配置对这些过滤器的异步支持。

关于java - 在 Microsoft Azure Web 应用程序服务(而非 VM)上将 Websockets 与 Java Tomcat 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35918089/

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