Socket.IO与Twisted

2022-04-18 00:00:00 python sockets socket.io twisted node.js

问题描述

我的想法是为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等高流量服务上使用。

相关文章