对于实时 node.js 消息传递应用程序,如果没有 Heroku 中的 websockets,我会获得相同的功能吗?
Posted
技术标签:
【中文标题】对于实时 node.js 消息传递应用程序,如果没有 Heroku 中的 websockets,我会获得相同的功能吗?【英文标题】:Will I get the same functionality without websockets in Heroku for a real-time node.js messaging app? 【发布时间】:2013-02-16 21:04:06 【问题描述】:我一直在 Heroku 上制作 node.jss + express + socket.io 应用程序。我最近意识到他们不支持 websockets,这对于实时通信来说是理想的。他们强迫你使用长轮询,它使用 http 代替。我想以正确的方式做到这一点,但另一方面,我不想再次设置这个项目,因为它只是一个概念证明/让我习惯了 node.js。
这里的正确做法是什么?继续使用heroku,然后可能稍后更改应用程序以使用套接字,或者使用与heroku不同的服务重新开始?这里要考虑的事情是我必须更改的代码量,以及坚持使用长轮询而不是 websockets 的功能损失。我不知道其中任何一个会如何受到影响。
谢谢
【问题讨论】:
【参考方案1】:socket.io 使用 xhr-polling
而不是 websocket
可以正常工作。性能不会那么好,但如今很少有云产品支持不止一个实例。
现在 nginx 已经支持 websocket,这可能很快就会改变。
【讨论】:
所以我所要做的就是添加 4 行代码 sn-p 以防止 websocket 使用,这是我唯一的代码差异吗?然后我的应用程序将在幕后使用 xhr-polling? @ThePuma 差不多,是的。 Heroku 有一个专门支持 socket.io 的页面:devcenter.heroku.com/articles/…【参考方案2】:如果你只想搞乱套接字和节点,我建议改为使用 nodejitsu。我使用它并且对它非常满意。不过,我现在又回到了 Heroku,因为它更适合我的需求(并且应用程序不需要实时交互,轮询就足够了)。 Nodejitsu 支持实际的 websocket。
【讨论】:
以上是关于对于实时 node.js 消息传递应用程序,如果没有 Heroku 中的 websockets,我会获得相同的功能吗?的主要内容,如果未能解决你的问题,请参考以下文章
在 PHP 中使用 Node.js、Socket.io、Redis 的私人聊天消息