0

我对python中的网络编程很陌生。

我有兴趣在浏览器上建立一个聊天室。(用于原型)。我非常了解 django,并且在过去做过一些扭曲的事情。

然后我遇到了轨道。它的文档记录非常糟糕(我认为它实际上不符合文档的条件),但是这些术语似乎经常出现:

  1. 轨道的
  2. 扭曲的
  3. MorbidQ、ActiveQ 和基本上一堆 MessageQueue 技术

我在轨道网站上做了一些例子,但它们似乎并不能真正解释一切是如何协同工作的。

我的问题是:

  1. 我一直在 [listen] 指令上看到http://:9000 。根据他们的主要网站,“监听部分描述了 Orbited 应该用来接受浏览器连接的接口和端口。” AFAIK,标准浏览器使用端口 80 进行通信。而且我认为这个端口用于orbited.js连接到彗星技术的服务器?如果 8000 被阻止会怎样?(就像学校/组织中的大多数防火墙一样)

  2. 我一直看到代理这个词。我不知道实际代理如何适应这种框架组合

  3. 与扭曲和轨道的关系。Orbited 是建立在扭曲的之上(如果我没记错的话)。那为什么会有这么多例子讨论使用轨道 ON TOP 的扭曲?为什么我首先需要扭曲?我可以在 nginx 上使用轨道运行吗?(同样,搜索 nginx 和 orbited 的结果中包含单词 proxy。这完全适合吗?)

  4. 关于http://anirudhsanjeev.org/tutorialhow-to-django-comet-orbited-stomp-morbidq-jsio/,作者使用 xml-rpc 服务器。有人可以解释为什么吗?(好吧,他说“你不能在你的 django 视图中启动一个反应堆发送/接收系统”,但是为什么我们首先需要在其中运行一个反应堆?轨道不是建立在扭曲之上的吗?应该因此它没有自己的反应堆吗?)

  5. Morbidq 将自己描述为“Morbid 是一个 STOMP 发布/订阅服务器,绝对没有集群潜力。它支持发布/订阅主题,并作为单个节点运行。” 我们为什么需要这个?彗星不解决的正是这样的事情吗?为什么我总是看到结合了一堆看似相似但实际上有明显区别的技术的教程?

  6. 我要做的就是构建一个简单的网络聊天应用程序。看到这里,我意识到可能使用轨道和扭曲以及 morbidq 和 django 等可能太麻烦了。(当然,我打算使其可扩展)。

  7. 我看了看龙卷风,没关系,但就社区而言,它有点小。除了允许非阻塞连接外,它并没有真正做彗星(我在 IRC 上学到了这一点)。我真的需要所有特殊的彗星技术吗,或者长轮询会满足我吗?(对于一个简单的网络聊天应用程序)

  8. 大公司都在用什么?大公司正在应用的标准事实上的彗星框架是什么?(比如 facebook、gtalk 和 twitter?)这些在 python 中可用吗?

任何问题的任何帮助将不胜感激。

4

2 回答 2

0

好吧,我也在为此苦苦挣扎,我想我可以回答一些问题,以供将来参考。

1) 如果对该端口的访问被阻止,您的网站将无法与 Orbited 通信。

2)代理是很多东西,把它想象成“重定向”,nginx作为代理工作。

3) orbited 是建立在 twisted 之上的,但它会启动自己的 Twisted 服务器。当涉及到twisted 时,人们可能会谈论他们自己在Twisted 中构建的应用程序,而不是Django 或其他人。

4)您可以避免 RPC 并通过 Django 脚本通过 post/get 请求将消息放入队列中,他可能想要构建更多......公司。

5) morbidQ 是一个队列系统。彗星只是一个概念。框架是为解决某些问题而构建的,可能还有其他类似的解决方案,但对于这种情况并不完整。我个人用rabbitMQ替换了morbidQ。

6)你是对的,可扩展性更多地取决于你的编码而不是你选择的技术。

7) 龙卷风很棒。所有被认为是特殊的东西都没有完整的浏览器支持,而长轮询则支持。

8) 他们从未开源过他们的彗星解决方案。但没什么大不了的。我认为红宝石在这件事上更加进化。

希望它可以帮助未来的网络冲浪者!

于 2012-11-07T16:04:02.543 回答
0

查看Alex Gaynor 关于 Python 和实时网络的 PyCon 演讲

于 2010-07-07T20:55:50.153 回答