所以我有这个Javascript服务器:
const net = require('net');
var port = process.env.PORT || 3001;
net.createServer(function (sock){
console.log('CONNECTED: ' + sock.remoteAddress + ":" + sock.remotePort);
sock.on('data', function(data){
console.log(data.toString());
});
sock.on('close', function(data){
console.log('DISCONNECTED: ' + sock.remoteAddress + ":" + sock.remotePort);
});
sock.on('error', function(error){
console.log(error);
});
}).listen(port, '0.0.0.0');
console.log('Listening on: ' + port);
我使用它来连接我的Java客户端:
public void connect () {
System.out.println("Connecting with: " + host + ":" + port);
try {
this.socket = new Socket(this.host, this.port);
System.out.println("Connected!");
} catch (IOException e) {
e.printStackTrace();
}
}
当我在本地尝试它时它起作用但每当我将它上传到heroku时它从不记录CONNECTED消息或任何接收的数据,所以我不认为它连接。
我使用它作为ip / port来连接我的客户端:.herokuapp.com:heroku.env.PORT不是字面上的,我使用heroku端口在启动时给我的应用程序,因为我看到了听力on:message。
我做错了吗?或者heroku不支持套接字吗?
答案 0 :(得分:0)
您的客户端应该通过端口80或443连接到<appname>.herokuapp.com
。PORT
var仅用于内部绑定。