首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >云上的Node.js TCP套接字服务器[Heroku/AppFog]

云上的Node.js TCP套接字服务器[Heroku/AppFog]
EN

Stack Overflow用户
提问于 2012-11-19 17:23:37
回答 3查看 5.6K关注 0票数 11

可以在云上运行面向Node.js TCP套接字的应用程序,更具体地说,可以在HerokuAppFog上运行。

它将不是一个web应用程序,而是一个使用客户端程序访问的服务器。其基本思想是使用云缩放功能和易于使用的平台。

我知道这样的应用程序可以像Amazon一样很容易地在IaaS上运行,但是我真的很想利用Heroku或AppFog的PaaS特性。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-20 09:14:09

我相当肯定,这并没有回答眼前的问题:“运行面向Node.js TCP套接字的应用程序是可能的”。所有PaaS公司(包括Nodejitsu)都支持HTTPS--只支持传入连接的反向代理。

通常,对于node.js +任何具有面向套接字连接的PaaS,您都希望使用WebSockets,但是:

  1. Heroku不支持WebSockets,只允许打开连接55秒钟(参见:https://devcenter.heroku.com/articles/http-routing#timeouts)。
  2. AppFog不支持WebSockets,但我不确定它们如何处理长期持有的HTTP连接。
  3. Nodejitsu支持WebSockets,并将保持连接打开直到关闭或重置。我们的node.js动力反向代理使这对我们来说非常便宜。

我们有计划支持前端TCP负载平衡与自定义端口在未来。敬请期待!

票数 17
EN

Stack Overflow用户

发布于 2012-11-20 21:29:07

AppFog和Heroku为您的应用程序提供一个任意端口来监听从端口80映射的端口。你不能选择你的港口。如果需要将连接保持长时间打开,请参阅下面的编辑。如果您的客户端不需要维护和打开连接,您应该考虑创建一个restful,该API为客户端应用程序提供json。端口80已经足够了,Node.js和Express为在paas上创建API做了一个极好的组合。

AppFog

https://docs.appfog.com/languages/node#node-walkthrough

代码语言:javascript
复制
var port = process.env.VCAP_APP_PORT || 5000;

Heroku

https://devcenter.heroku.com/articles/nodejs

代码语言:javascript
复制
var port = process.env.PORT || 5000;

编辑:正如索引零所提到的,AppFog和Heroku只支持https并关闭长期保存的连接。只要有活动,AppFog就会保持连接打开。这可以通过使用Socket.io或第三方解决方案(如推手 )来解决。

代码语言:javascript
复制
// Socket.io server
var io = require('socket.io').listen(port);
...
io.configure(function () { 
  io.set("transports", ["xhr-polling"]); 
  io.set("polling duration", 12); 
});
票数 4
EN

Stack Overflow用户

发布于 2014-12-16 09:55:41

tl;dr -在当前的世界状况下,这只是不可能的;您必须购买一个具有自己的公共IP地址的虚拟机。

我发现的所有PaaS提供者都在其所有应用程序前面都有一个HTTP路由器。这使得它们能够在一个IP地址下容纳数十万个应用程序,极大地提高了可伸缩性,从而--它们如何免费提供应用程序托管。因此,在HTTP中,Hostname报头用于唯一标识应用程序。

但是,在TCP情况下,必须使用IP地址来标识应用程序。因此,为了使其工作,PaaS提供程序将被迫在其IPv4范围内为您分配一个。这是因为两个主要原因: IPv4地址空间已经完全耗尽,以及“遗留”网络的缓慢速度将使VM很难实际移动。(“遗留”网络是指标准/非SDN网络。)

这两个问题的解决方案是IPv6和SDN,尽管我预见到无处不在的SDN会在IPv6做- which之前到达,然后可以用来解决各种IPv4问题。亚马逊已经在他们的数据中心使用了SDN,尽管还有很长的路要走。同时,只需购买一个带有公共IP地址的虚拟机/linux容器实例,并在那里运行您的TCP服务器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13458943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档