Azure spring Boot socket.io无法分配请求的地址问题

nwsw7zdq  于 2023-08-07  发布在  Spring
关注(0)|答案(1)|浏览(105)

我将Sping Boot Socket.IO应用程序部署到Azure Web App for Containers。
在Docker中,Spring使用端口80,Socket.IO使用端口443。
我尝试使用Azure虚拟IP地址和主机名的默认域值,但总是出现以下错误:

Caused by: java.net.BindException: Cannot assign requested address
2023-07-15T15:49:58.391590007Z at java.base/sun.nio.ch.Net.bind0(Native Method) ~[na:na]
2023-07-15T15:49:58.391594407Z at java.base/sun.nio.ch.Net.bind(Net.java:555) ~[na:na]
2023-07-15T15:49:58.391598807Z at java.base/sun.nio.ch.ServerSocketChannelImpl.netBind(ServerSocketChannelImpl.java:337) ~[na:na]
2023-07-15T15:49:58.391606707Z at java.base/sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:294) ~[na:na]
2023-07-15T15:49:58.391614307Z at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:141) ~[netty-transport-4.1.94.Final.jar!/:4.1.94.Final]
2023-07-15T15:49:58.391618807Z at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:562) ~[netty-transport-4.1.94.Final.jar!/:4.1.94.Final]
2023-07-15T15:49:58.391623407Z at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1334) ~[netty-transport-4.1.94.Final.jar!/:4.1.94.Final]
2023-07-15T15:49:58.391627908Z at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:600) ~[netty-transport-4.1.94.Final.jar!/:4.1.94.Final]

字符串

vu8f3i0k

vu8f3i0k1#

大多数情况下,当您尝试绑定的端口已在使用时,会发生上述错误。将Socket.IO服务器绑定到与Azure Web App for Containers使用的默认端口不冲突的其他端口。

  • 我尝试了一个示例聊天应用程序使用不同的端口,如Socket.IO的8080。

我使用的是Java 11版本的应用程序(Springboot)。

依赖项:

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-rsocket</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.corundumstudio.socketio</groupId>
            <artifactId>netty-socketio</artifactId>
            <version>2.0.3</version>
        </dependency>
        <dependency>
            <groupId>io.projectreactor</groupId>
            <artifactId>reactor-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

字符串

  • 我能够在本地运行我的应用程序,并将其转换为Docker镜像,然后进行容器化。


的数据

Docker容器中:

聊天应用:

  • 创建了ACR,然后从docker推送到其中。


  • 我可以看到我推送到Azure容器注册表的容器。



然后,我创建了一个从ACR部署并配置端口的webapp:

  • 端口80(HTTP)对传入流量开放。
  • 端口443(HTTPS)对传入流量开放。


容器日志:

相关问题