Servlets 如何在不获取NetConnection.Connect.Closed错误的情况下通过http传输Red5?

Servlets 如何在不获取NetConnection.Connect.Closed错误的情况下通过http传输Red5?,servlets,red5,http-tunneling,Servlets,Red5,Http Tunneling,红色5 v0.8 我正在尝试通过端口80传输red5,因为我的应用程序在某些设置上无法工作 起初,当我建立red5连接时,我试着把“:80”放在域名后面。这导致新的NetConnection.Connect.Closed错误 然后我撤销了这些更改,然后尝试遵循这些更改,在实现这些更改后,我得到了相同的错误 那么我做错了什么/我还需要做什么 另外,我应该向您提供哪些代码/配置文件 编辑: 我查了一下Red5日志,似乎我明白了 2013-06-14 05:04:53,330 [main] ERROR

红色5 v0.8

我正在尝试通过端口80传输red5,因为我的应用程序在某些设置上无法工作

起初,当我建立red5连接时,我试着把“:80”放在域名后面。这导致新的
NetConnection.Connect.Closed
错误

然后我撤销了这些更改,然后尝试遵循这些更改,在实现这些更改后,我得到了相同的错误

那么我做错了什么/我还需要做什么

另外,我应该向您提供哪些代码/配置文件

编辑:

我查了一下Red5日志,似乎我明白了

2013-06-14 05:04:53,330 [main] ERROR o.a.coyote.http11.Http11Protocol - Error initializing endpoint
java.net.BindException: Address already in use<null>:80

来自日志的错误消息

java.net.BindException: Address already in use<null>:80
    at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:502) [tomcat-coyote-6.0.18.jar:na]
    at org.apache.coyote.http11.Http11Protocol.init(Http11Protocol.java:176) [tomcat-coyote-6.0.18.jar:na]
    at org.apache.catalina.connector.Connector.initialize(Connector.java:1058) [catalina-6.0.18.jar:na]
    at org.apache.catalina.startup.Embedded.start(Embedded.java:830) [catalina-6.0.18.jar:na]
    at org.red5.server.tomcat.TomcatLoader.init(TomcatLoader.java:430) [red5.jar:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [na:1.6.0_27]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [na:1.6.0_27]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [na:1.6.0_27]
    at java.lang.reflect.Method.invoke(Method.java:616) [na:1.6.0_27]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1414) [spring-beans-2.5.6.jar:2.5.6]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1375) [spring-beans-2.5.6.jar:2.5.6]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335) [spring-beans-2.5.6.jar:2.5.6]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473) [spring-beans-2.5.6.jar:2.5.6]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) [spring-beans-2.5.6.jar:2.5.6]
    at java.security.AccessController.doPrivileged(Native Method) [na:1.6.0_27]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) [spring-beans-2.5.6.jar:2.5.6]
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) [spring-beans-2.5.6.jar:2.5.6]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) [spring-beans-2.5.6.jar:2.5.6]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) [spring-beans-2.5.6.jar:2.5.6]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) [spring-beans-2.5.6.jar:2.5.6]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) [spring-beans-2.5.6.jar:2.5.6]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429) [spring-beans-2.5.6.jar:2.5.6]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728) [spring-context-2.5.6.jar:2.5.6]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380) [spring-context-2.5.6.jar:2.5.6]
    at org.red5.server.Launcher.launch(Launcher.java:60) [red5.jar:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [na:1.6.0_27]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [na:1.6.0_27]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [na:1.6.0_27]
    at java.lang.reflect.Method.invoke(Method.java:616) [na:1.6.0_27]
    at org.red5.server.Bootstrap.bootStrap(Bootstrap.java:106) [boot.jar:na]
    at org.red5.server.Bootstrap.main(Bootstrap.java:50) [boot.jar:na]
java.net.BindException:地址已在使用中:80
位于org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:502)[tomcat-coyote-6.0.18.jar:na]
在org.apache.coyote.http11.Http11Protocol.init(Http11Protocol.java:176)[tomcat-coyote-6.0.18.jar:na]
在org.apache.catalina.connector.connector.initialize(connector.java:1058)[catalina-6.0.18.jar:na]
在org.apache.catalina.startup.Embedded.start(Embedded.java:830)[catalina-6.0.18.jar:na]
位于org.red5.server.tomcat.TomcatLoader.init(TomcatLoader.java:430)[red5.jar:na]
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)[na:1.6.0_27]
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)[na:1.6.027]
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[na:1.6.027]
在java.lang.reflect.Method.invoke(Method.java:616)[na:1.6.027]
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.InvokeCustominetMethod(AbstractAutowireCapableBeanFactory.java:1414)[spring-beans-2.5.6.jar:2.5.6]
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1375)[spring-beans-2.5.6.jar:2.5.6]
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)[spring-beans-2.5.6.jar:2.5.6]
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)[spring-beans-2.5.6.jar:2.5.6]
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)[spring-beans-2.5.6.jar:2.5.6]
位于java.security.AccessController.doPrivileged(本机方法)[na:1.6.0_27]
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)[spring-beans-2.5.6.jar:2.5.6]
位于org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)[spring-beans-2.5.6.jar:2.5.6]
在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)[spring-beans-2.5.6.jar:2.5.6]
位于org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)[spring-beans-2.5.6.jar:2.5.6]
位于org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)[spring-beans-2.5.6.jar:2.5.6]
位于org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)[spring-beans-2.5.6.jar:2.5.6]
位于org.springframework.beans.factory.support.DefaultListableBeanFactory.PreInstanceSingleton(DefaultListableBeanFactory.java:429)[spring-beans-2.5.6.jar:2.5.6]
位于org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)[spring-context-2.5.6.jar:2.5.6]
位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)[spring-context-2.5.6.jar:2.5.6]
在org.red5.server.Launcher.launch(Launcher.java:60)[red5.jar:na]
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)[na:1.6.0_27]
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)[na:1.6.027]
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[na:1.6.027]
在java.lang.reflect.Method.invoke(Method.java:616)[na:1.6.027]
在org.red5.server.Bootstrap.Bootstrap(Bootstrap.java:106)[boot.jar:na]
位于org.red5.server.Bootstrap.main(Bootstrap.java:50)[boot.jar:na]

您不能让red5服务器和http服务器同时侦听端口80。要使用RTMPT,您可以使用代理服务器将打开/发送/fsc/空闲等请求重定向到本地red5服务器,例如端口5080。这是我在apache web服务器中使用的配置:

ProxyPass /open http://localhost:5080/open
ProxyPassReverse /open http://localhost:5080/open
ProxyPass /send http://localhost:5080/send
ProxyPassReverse /send http://localhost:5080/send
ProxyPass /idle http://localhost:5080/idle
ProxyPassReverse /idle http://localhost:5080/idle
ProxyPass /close http://localhost:5080/close
ProxyPassReverse /close http://localhost:5080/close
ProxyPass /fcs http://localhost:5080/fcs
ProxyPassReverse /fcs http://localhost:5080/fcs
并让red5服务器在端口5080(默认端口)上侦听:

# HTTP
http.host=0.0.0.0
http.port=5080
https.port=5443

当然,如果您愿意,您可以使用任何其他未使用的端口。

谢谢。我意识到这可能超出了范围,但如何设置代理服务器来实现这一点呢?代理服务器需要包括哪些内容?我只是一名程序员,所以我对这方面的知识不是很了解,但我有AWS访问权限,所以我可以创建虚拟服务器。谷歌搜索“代理Nginx”,或者使用标记“Nginx”将您的问题发布到stackoverflow,了解如何将Nginx配置为代理服务器。我只知道阿帕奇。。。
ProxyPass /open http://localhost:5080/open
ProxyPassReverse /open http://localhost:5080/open
ProxyPass /send http://localhost:5080/send
ProxyPassReverse /send http://localhost:5080/send
ProxyPass /idle http://localhost:5080/idle
ProxyPassReverse /idle http://localhost:5080/idle
ProxyPass /close http://localhost:5080/close
ProxyPassReverse /close http://localhost:5080/close
ProxyPass /fcs http://localhost:5080/fcs
ProxyPassReverse /fcs http://localhost:5080/fcs
# HTTP
http.host=0.0.0.0
http.port=5080
https.port=5443