在Microsoft Azure Web App服务(非VM)上使用带有Java Tomcat的WebSocket

在Microsoft Azure Web App服务(非VM)上使用带有Java Tomcat的WebSocket,java,azure,tomcat,websocket,azure-web-app-service,Java,Azure,Tomcat,Websocket,Azure Web App Service,是否有人使用Tomcat在Microsoft Azure WebApp服务上运行WebSocket? 我尝试运行Tomcat 7,但无法连接到Websocket端点。我总是收到这样的信息: WebSocket连接到 'ws://mywebapp.azurewebsites.net/websocket-example/websocket/chat' 失败:WebSocket握手期间出错:意外响应代码: 404 在本地运行时,一切正常。在本地和Azure上,我正在使用Tomcat 7和Java 7(

是否有人使用Tomcat在Microsoft Azure WebApp服务上运行WebSocket? 我尝试运行Tomcat 7,但无法连接到Websocket端点。我总是收到这样的信息:

WebSocket连接到 'ws://mywebapp.azurewebsites.net/websocket-example/websocket/chat' 失败:WebSocket握手期间出错:意外响应代码: 404

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

我还需要做什么,才能让WebSocket通过Java WebApp在Azure上工作

Azure上的WebSocket是否仅与Node.js和ASP.NET一起使用

更新:

WebSocket正在使用Tomcat开发Azure!您必须让舒尔确保在Azure门户中启用Websockets,并选择编译.war文件的正确Java、Tomcat和Plattform版本。
除此之外,您还必须确保舒尔的服务器端点按说明正确加载

请尝试参考
web.config
中Tomcat的文档部分,并在Tomcat启动选项中添加
-Dorg.apache.Tomcat.websocket.DISABLE_BUILTIN\u EXTENSIONS=true

请尝试参考
web.config
中Tomcat的文档部分,并添加
-Dorg.apache.tomcat.websocket.DISABLE_BUILTIN_EXTENSIONS=true
在tomcat启动选项中。

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

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

我发现需要为应用程序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>

EasyAuthFilter
com.microsoft.azure.appservice.EasyAuthFilter
真的
AppServiceFilter
com.microsoft.azure.appservice.filters.AppServiceFilter
真的

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

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

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

我发现需要为应用程序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>

EasyAuthFilter
com.microsoft.azure.appservice.EasyAuthFilter
真的
AppServiceFilter
com.microsoft.azure.appservice.filters.AppServiceFilter
真的
这些过滤器并不明显,因为它们是由Microsoft在tomcat服务器安装目录中的web.xml中添加的,但缺少
标记。您可以使用kudu ssh检查安装文件夹中的web.xml,并导航到/usr/local/tomcat/config。由于无法更改安装目录中的文件(应用程序重新启动时将覆盖该文件),因此需要在应用程序web.xml中为这些过滤器配置异步支持