2009-10-03 16 views
23

Ich werde Comet in Python implementieren (obwohl ich gute Dinge über Erlycomet höre, bin ich nicht begeistert von der Unterstützung eines Erlang-basierten Webservers zusätzlich zu allem anderen in unserem Backend). Ich habe mehrere Möglichkeiten gefunden:Die neueste Empfehlung für Comet in Python?

(es gibt auch einige andere Möglichkeiten, die eine Schnittstelle mit Java-Servern, aber Das interessiert mich nicht)

Kann jemand eine Empfehlung unter diesen Implementierungen unter Berücksichtigung von Leistung, Community und einfacher Implementierung abgeben?

+1

Sie könnten auch interessiert sein in den Antworten auf diese Frage, die einige andere Alternativen hat: http://stackoverflow.com/questions/960969/python-comet-server –

+0

Vielen Dank! StreamHub sieht aus wie es Java benötigt? Ich habe jedoch den Orbit zur Liste hinzugefügt. –

+1

Hier ist eine voll ausgestattete Beispiel Comet App (mit Django + Orbited + Twisted) http://github.com/clemesha/hotdot – clemesha

Antwort

8

Ich persönlich benutze Orbited, sowohl weil ich Twisted bereits verwende und weil es reif scheint. Twisted hat eine lange Geschichte mit vielen Benutzern, besonders im Vergleich zu Diesel und Tornado. Orbited ist in der Tat auf Twisted gebaut.

Es gibt einen guten Blog-Eintrag über eine end-to-end orbit solution here. Es sendet Daten von einem Python-Skript an einen STOMP-Server (MorbidQ) an "Orbited to Javascript" - und stellt diese Daten als Graph dar.

Tornado scheint ziemlich neu in der Szene, ich konnte nicht Twisted-Comet finden und ich hatte nicht von Diesel gehört. Ich mag besonders, wie Orbited jede Art von TCP/IP weiterleiten kann, aber es einfach macht, JavaScript-Clients mit einer Nachricht zu verbinden, die das STOMP-Backend übergibt.

5

Ich würde empfehlen, wenn Sie eine Comet-App schreiben möchten.

Was macht Comet komplexer zu implementieren (als eine Ajax-App, sagen), ist, dass Sie sowohl den Client (ein Javascript-Client Comet) und den Server (ein asynchroner Webserver wie Twisted) in Verbindung, und dies benötigt ist, was Sie mit Orbited bekommen - sowohl der Javascript-Client als auch der Server.

Beide Tornado und Diesel bieten hauptsächlich den asynchronen Server Teil, aber fehlen die wichtigen Client-Javascript-Code.

Plus gibt es eine ziemlich gute Gemeinschaft um umkreiste, und mehrere Menschen bauen coole Anwendungen mit sich, diese Seiten zeigt ein paar dieser Anwendungen: http://orbited.org/wiki/Sites

2

Ich habe auch Verdrehte im Einsatz. Aber statt Orbited verwende ich Nevow.Athena. Es ist wirklich einfach: Erfahren Sie mehr unter LiveElement tutorial.

+1

Hinweis: Die divmod.org Website ist vor einiger Zeit abgestürzt und wird wahrscheinlich nie wieder online gehen. Ich glaube die neueste Version des LiveElement-Tutorials ist hier: http://web.archive.org/web/20101012035741/http://divmod.org/trac/wiki/DivmodNevow/Athena/Tutorials/LiveElement –

+0

Auch, _some_ of Die alte Divmod-Dokumentation ist hier: http://divmodsphinx.funsalize.net –

2

Sind Sie auf Comet festgelegt? Warum nicht WebSockets? Wenn Letzteres auch eine Option ist, möchte ich auf https://github.com/tavendo/AutobahnPython verweisen, die WebSockets in Twisted implementiert (Dokumentation ist verfügbar unter http://autobahn.ws/python). Es ist standardkonform, verfügt über eine basisbasierte API und eine erweiterte API für Frame-basierte/Streaming-Verarbeitung und viele weitere Extras.

+0

WebSockets erfordert Flash für IE <9 – Lorenzo

+0

ja. auch IE9 hat kein WS. Microsoft hat einige WS-Beta, aber nur für Silverlight, auf das von JS zugegriffen werden kann - wieder wie die Flash-Problemumgehung. Es gibt keine offiziellen Ankündigungen bezüglich WS Unterstützung durch MS - sie spielen Spiele auf dem kommenden Standard und auch auf WebGL. Bis zu was soll man darüber denken?) – oberstet

+0

IE10 kommt mit Unterstützung für binäre WebSockets-Nachrichten: http://www.tavendo.de/autobahn/testsuite.html – oberstet

1

Meine Antwort auf this question ein Beispiel für Server-Push bietet die autobahn-Bibliothek, die meiner Meinung nach so weit ist das benutzerfreundlichste WebSocket Rahmen von Twisted angetrieben. Auch eine JS-Implementierung ist ebenso verfügbar wie Android.

Comet vollständig durch WebSocket ersetzt wird, und Sie sollten mit der letzteren berücksichtigen, es sei denn Sie planen, IE8 zu unterstützen und ältere