我正在使用Java编写一个小型游戏服务器。
我使用TooTallNate-Java-Websockets库来创建我的websocket服务器。 当我在localhost上运行我的服务器时一切正常,我可以从任何地方连接到它。但是当我将我的应用程序提交给Heroku时,每次我尝试建立套接字连接时都会收到错误 ECONNREFUSED(拒绝连接)
值得一提的是,当我使用应该模拟heroku环境的工头运行我的应用程序时,一切正常。
作为我的websocket服务器的端口,我尝试使用 8080 以及 5000 到 8000 之间的许多其他人。
我只能猜测heroku上发生了什么,因为日志只包含http请求的基本信息。
请帮助,我接近放弃:(
修改
以下是我在Proc文件中的内容:
web: ./build/install/my-app/bin/my-app
更新 创建了一个简单的抽象应用程序来展示问题: (当然,在工头测试,它适用于当地环境)
WebSocket connection to 'wss://test-websocket-yan.herokuapp.com:39773/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
答案 0 :(得分:6)
我正在回答我自己的问题,分享我是如何设法连接到Heroku上的Java websocket服务器的。
答案 1 :(得分:4)
您必须使用Heroku设置的端口作为$PORT
env var:
在Heroku上,应用程序是完全独立的,不依赖于将Web服务器运行时注入执行环境来创建面向Web的服务。每个Web进程只是绑定到一个端口,并侦听进入该端口的请求。要绑定的端口由Heroku指定为PORT环境变量。
有关详情,请参阅:https://devcenter.heroku.com/articles/runtime-principles#web-servers
答案 2 :(得分:0)
您可能只需要设置 REDIS_URL
。就我而言,它在 REDISCLOUD_URL
中。