Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有Java EconRefused的Heroku WebSocket(拒绝连接)_Java_Heroku_Java Server_Java Websocket - Fatal编程技术网

带有Java EconRefused的Heroku WebSocket(拒绝连接)

带有Java EconRefused的Heroku WebSocket(拒绝连接),java,heroku,java-server,java-websocket,Java,Heroku,Java Server,Java Websocket,我正在用Java编写一个小游戏服务器 我使用库创建websocket服务器。 当我在本地主机上运行我的服务器时,一切正常,我可以从任何地方连接到它。但是,当我将我的应用提交给Heroku时,每次尝试建立套接字连接时,我都会收到一个错误ECONREFUSE(连接被拒绝) 值得一提的是,当我和foreman一起运行我的应用程序时,应该是模拟heroku环境的,一切都正常工作 作为websocket服务器的一个端口,我尝试使用8080和5000到8000之间的许多其他端口 我只能猜测heroku上发生

我正在用Java编写一个小游戏服务器

我使用库创建websocket服务器。 当我在本地主机上运行我的服务器时,一切正常,我可以从任何地方连接到它。但是,当我将我的应用提交给Heroku时,每次尝试建立套接字连接时,我都会收到一个错误ECONREFUSE(连接被拒绝)

值得一提的是,当我和foreman一起运行我的应用程序时,应该是模拟heroku环境的,一切都正常工作

作为websocket服务器的一个端口,我尝试使用808050008000之间的许多其他端口

我只能猜测heroku上发生了什么,因为日志只包含http请求的基本信息

请帮忙,我快要放弃了:(

编辑

以下是我的Proc文件中的内容:

web: ./build/install/my-app/bin/my-app
更新 创建了一个简单的抽象应用程序来展示问题: (当然由工头测试,在当地环境下工作)

  • 我的html/js测试仪:
  • 我的主要java Jetty服务器:
  • 控制台错误消息:
    WebSocket连接到'wss://test-websocket-yan.herokuapp.com:39773/'失败:建立连接时出错:net::ERR_connection_拒绝

  • 您必须使用Heroku设置为
    $port
    env var的端口:

    在Heroku上,应用程序是完全独立的,不依赖运行时将web服务器注入执行环境来创建面向web的服务。每个web进程只需绑定到一个端口,并侦听来自该端口的请求。Heroku将绑定到的端口指定为端口环境变量


    有关更多信息,请参阅:

    我在回答自己的问题,与大家分享我是如何连接到Heroku上的Java websocket服务器的

  • 使用Java创建您的web套接字服务器,实现取决于您,您可以使用javax或Jetty websockets,或者,我已经使用Jetty。这是我的。我已经遵循了示例
  • 连接到heroku上的web套接字时,请使用以下方案ws://+YourHerokAppAddress+yourSocketEndpoint。端点是您的websocket正在侦听的相对地址,在我的情况下是“/socket”。无需指定端口

  • 你可能只需要设置
    REDIS\u URL
    就可以了。我的例子是
    REDISCLOUD\u URL

    你在Heroku上绑定应用程序的
    $PORT
    env var吗?你说你在尝试5000到8000之间的端口。是在Heroku上吗?你在Proc文件中绑定$PORT env var是什么意思?不。我应该吗?谢谢,我会的试试看。但这是否意味着我不能使用任何其他端口?如果我需要3个不同的端口来监听怎么办?Heroku支持每个应用程序进程使用一个端口。而不是为WS使用不同的端口,你需要在你的应用程序中使用不同的路由。有第三方,但可能不适合这种情况。我刚刚用loc进行了测试al$PORT环境变量。没有任何区别:(请在问题中查看我的更新,如果需要,我可以提供更多详细信息。好的,我做到了!有趣的是我不必向wss连接添加任何端口!:)现在是这样的:wss://test-websocket-again.herokuapp.com/events/“:)嘿,我正在heroku上部署我的java websocket应用程序。一切正常,但我无法使用java客户端连接到它(如果部署在本地主机上,它可以工作),它会给出
    javax.websocket.DeploymentException:Handshake error
    我在本地主机和
    ws://host\u name/Dashboard/hello上使用了
    ws://localhost:8080/Dashboard/hello