【发布时间】:2013-02-21 00:10:52
【问题描述】:
我想在 heroku 上构建一个 node.js 聊天服务器,聊天客户端将是 iOS 应用程序。
我的第一次尝试是基于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);
如果我在 localhost 中部署这个 node.js 服务器代码,我可以使用终端作为测试客户端成功地向 TCP 服务器发送和接收聊天
nc localhost 5000
但是,如果我在 heroku 中部署此服务器代码,我将无法再与服务器建立 tcp 连接。
我的理解是服务器将监听 process.env.PORT。
所以我首先追踪了服务器正在侦听的这个端口,例如30134.
如果我尝试以这种方式连接:
nc http://my-heroku-app.herokuapp.com 30134
什么都没有发生。
我认为我在某个地方存在一些根本性的误解。谁能指导我?在 Heroku 服务器上可以进行 Real TCP 套接字聊天吗?
【问题讨论】:
-
你
Procfile的内容是什么?