Socket.IO 与 Twisted [关闭]

Posted

技术标签:

【中文标题】Socket.IO 与 Twisted [关闭]【英文标题】:Socket.IO vs. Twisted [closed] 【发布时间】:2013-11-11 18:05:45 【问题描述】:

我的想法是为 iosandroid 构建一个简单的聊天应用程序。无论如何,我的问题与服务器端有关。从我读过的内容来看,做一个聊天应用程序的最佳选择是构建一个套接字。提到数据库,我的意图是使用 mysql,这可能也很重要,以便选择一种可能性。

我的问题是,就可扩展性、速度和安全性而言,这是最佳选择:使用 Python 使用 Twisted 或使用 NodeJS 使用 Socket.IO 构建套接字?

我想可能还有其他可能性来构建一个高效的套接字,但现在我正在考虑这两个。如果您能给我一些建议,我将不胜感激。

【问题讨论】:

许多好的问题会根据专家的经验产生一定程度的意见,但这个问题的答案往往几乎完全基于意见,而不是事实、参考资料或特定专业知识。 “最佳”选项将取决于太多参数,无法以这种格式回答。 但是,例如,在速度方面,肯定有一个客观的答案。无论如何,听取与这些图书馆合作过的人的意见都不错。 这会很糟糕,因为仅基于意见的答案在 Stack Overflow 上被认为没有用处。 @IOS_DEV 速度不一定有“客观答案”,因为这在很大程度上取决于您的工作量和您打算做什么。此外,速度通常是您应该考虑的最后一个问题。如果您谈论的是“简单的聊天应用程序”,那么您通常不需要任何特别高性能的东西。真正的问题是:你更愿意写 Python 还是 javascript?哪一个可以让您更快地启动和运行 MVP?我的建议是花一些时间尝试每一个。组装一个快速概念验证聊天应用程序。 @Lix 但是意见可能会反映一个选项是否对开发人员更友好,这也很重要。此外,如果有人对其中一些有具体意见,它可以基于个人经验或图书馆的具体方面。不管他们意见的原因是什么,这个原因可以帮助我选择其中一个选项。 【参考方案1】:

比较 Twisted 和 Socket.io 正在将苹果比作载有苹果的卡车。 Twisted 是一个为 Python 提供面向事件的编程功能的库。在 javascript 中,这仅仅是 javascript 本身(无论是 node.js 还是网络浏览器,甚至是 rhino)。

更恰当的比较是将 node.js 上的 Socket.io 与 Python 上的 Socket.io 进行比较。虽然 node 上有一个 socket.io 服务器的主要实现,但 Python 有几个:

https://github.com/MrJoes/tornadio

https://github.com/abourget/gevent-socketio

https://github.com/stephenmcd/django-socketio

(取自 socket.io wiki:https://github.com/learnboost/socket.io/wiki)

如果需要,您甚至可以使用 Twisted 在 Python 中实现自己的 socket.io。 socket.io 协议记录在这里:https://github.com/LearnBoost/socket.io-spec。但这会破坏 socket.io 的目的 - 它抽象出实时 Web 通信的低级细节,并允许您专注于编写业务逻辑。

在客户端,无论您决定使用哪种语言编写服务器,您都可以将相同的 socket.io 脚本部署到浏览器。

关于选择哪种语言:我的经验法则是选择您最熟悉的语言。您将在调试业务逻辑时遇到足够多的问题。不要使用不熟悉的语言使其复杂化。

这两种语言都是久经沙场的(是的,即使是 node.js,考虑到它的年轻程度也令人惊讶)。例如,Python 用于 Dropbox 等高流量服务的生产环境。 Node 目前用于 LinkedIn 移动等高流量服务。

【讨论】:

谢谢@slebetman!你的回答让我明白了很多事情。

以上是关于Socket.IO 与 Twisted [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

iPhone Objective-C 套接字与 Socket.IO 通信 [关闭]

在nodeJs中将pm2与socket io集成[关闭]

Twisted 有啥了不起的? [关闭]

node与socket.io搭配小例子-转载

io.emit 与 socket.emit

基于socket.io客户端与服务端的相互通讯