我想在heroku上建立一個node.js聊天服務器,聊天客戶端就是iOS應用程序。簡單的TCP套接字聊天服務器不能在heroku上工作
我的第一個嘗試是建立一個基於socket.io的服務器。它的工作原理,但我不喜歡的事實,iOS應用程序正在使用長輪詢而不是websocket或tcp套接字與服務器通話。
所以我的第二次嘗試是使用真實的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的本地主機中的服務器代碼,我可以成功地發送和接收聊天到使用終端作爲測試客戶端
nc localhost 5000
,但如果我在部署這個的Heroku服務器代碼TCP服務器,我不能再建立與服務器的TCP連接。
我的理解是服務器將在process.env.PORT中偵聽。
因此我首先找出服務器正在監聽的端口,例如30134.
然後如果我試圖以這種方式連接:
nc http://my-heroku-app.herokuapp.com 30134
什麼也沒有發生。
我想我有一些根本性的誤解。任何人都可以引導我?在Heroku服務器上可以進行真正的TCP套接字聊天嗎?
你的'Procfile'的內容是什麼? – Floby 2013-03-06 09:27:16
web:node server.js – mkto 2013-03-06 09:31:50