Socket.IO与Twisted
问题描述
我的想法是为iOS和Android构建一个简单的聊天应用程序。无论如何,我的问题都与服务器端有关。根据我所读到的,开发聊天应用程序的最佳选择是构建一个套接字。谈到数据库,我打算使用MySQL,在选择其中一种可能性时,考虑这一点可能也很重要。
我的问题是,从可伸缩性、速度和安全性来看,哪一个是最好的选择:用Twisted用Python构建套接字,还是用Socket.IO用NodeJS构建套接字?
我猜可能还有其他构建高效套接字的可能性,但到目前为止,我正在考虑这两个。如果你能给我一些建议,我将不胜感激。
解决方案
比较Twisted和Socket.io就是把苹果比作一辆运苹果的卡车。Twisted是一个向Python提供面向事件编程功能的库。在Java脚本中,这仅仅是Java脚本本身(可以是node.js或Web浏览器,甚至是Rhino)。
更恰当的比较是比较node.js上的Socket.io和Python上的Socket.io。虽然在节点上有一个主要的Socket.IO服务器实现,但是有几个用于Python的实现:https://github.com/MrJoes/tornadio
https://github.com/abourget/gevent-socketio
https://github.com/stephenmcd/django-socketio
(摘自Socket.IO维基: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也是如此,考虑到它是如此年轻,这是令人惊讶的)。例如,在Dropbox等高流量服务的生产中就使用了Python。节点当前正在LinkedIn Mobile等高流量服务上使用。
相关文章