heroku上にnode.jsチャットサーバーを構築したかったのですが、チャットクライアントはiOSアプリになります。
私の最初の試みは、socket.ioに基づいてサーバーを構築することです。それは機能しますが、iOSアプリがwebsocketやtcpソケットの代わりに長いポーリングを使用してサーバーと通信しているという事実は好きではありません。
したがって、2番目の試みは、実際のTCPソケットを使用してサーバーを構築することです。コードは次のとおりです。
var net = require('net');
var sockets = [];
var server = net.createServer(function(socket){
sockets.push(socket);
socket.on('data', function (data) {
for(var i=0; i< sockets.length; i++)
{
sockets[i].write(data);
}
});
socket.on('end', function() {
var i = sockets.indexOf(socket);
sockets.splice(i, 1);
})
});
var port = process.env.PORT || 5000;
console.log("server listening to port " + port);
server.listen(port);
このnode.jsサーバーコードをローカルホストにデプロイすると、ターミナルをテストクライアントとして使用して、TCPサーバーとのチャットを正常に送受信できます。
nc localhost 5000
しかし、このサーバーコードをherokuにデプロイすると、サーバーとのtcp接続を確立できなくなりました。
私の理解では、サーバーはprocess.env.PORTでリッスンします。
そこで、最初にサーバーがリッスンしているこのポート(30134など)をトレースしました。
次に、この方法で接続しようとすると、次のようになります。
nc http://my-heroku-app.herokuapp.com 30134
何も起こりません。
どこかで根本的な誤解があると思います。誰かが私を導くことができますか?HerokuサーバーでRealTCPソケットチャットは可能ですか?