2009-02-07 6 views
0

Je suis une petite question ici:Google Apps Streaming HTTP avec la question Python

Il y a quelque temps que je mis en œuvre HTTP en continu en utilisant le code PHP, quelque chose de semblable à ce qui est sur cette page:

http://my.opera.com/WebApplications/blog/show.dml/438711#comments

Et je reçois des données avec une solution très similaire. Maintenant, j'ai essayé d'utiliser le deuxième code de cette page (en Python), mais peu importe ce que je fais, je reçois responseText du serveur python après que tout se termine. Voici un code python:

print "Content-Type: application/x-www-form-urlencoded\n\n" 

i=1 
while i<4: 
print("Event: server-time<br>") 
print("data: %f<br>" % (time.time(),)) 
sys.stdout.flush() 
i=i+1 
time.sleep(1) 

Et voici le code Javascript:

ask = new XMLHttpRequest(); 
ask.open("GET","/Chat",true); 
setInterval(function() 
{ 
if (ask.responseText) document.write(ask.responseText); 
},200); 
ask.send(null); 

Quelqu'un at-il idée ce que je fais mal? Comment puis-je recevoir ces foutus messages les uns après les autres, pas seulement tous à la fin de la boucle while? Merci pour toute aide ici!

Edit:

principale chose que j'oublié d'ajouter: serveur est le serveur d'applications Google (je ne suis pas sûr que google propre implémentation), voici un lien avec une explication (je pense uhh):

http://code.google.com/intl/pl-PL/appengine/docs/python/gettingstarted/devenvironment.html http://code.google.com/intl/pl-PL/appengine/docs/whatisgoogleappengine.html

+0

Quel "serveur python" utilisez-vous? –

+0

Oui c'est la chose principale à dire ici. Eh bien, j'ai mis à jour ma question. – Wilq32

Répondre

1

qui ressemble à un code cgi - Je suppose que le serveur web tamponne la réponse des gestionnaires cgi. Il s'agit donc de choisir les bons outils et de faire la bonne configuration.

Je suggère d'utiliser un serveur wsgi et de profiter du support de streaming wsgi.

Voici votre exemple de code traduit à une application wsgi:

def app(environ, start_response): 
    start_response('200 OK', [('Content-type','application/x-www-form-urlencoded')]) 
    i=1 
    while i<4: 
     yield "Event: server-time<br>" 
     yield "data: %f<br>" % (time.time(),) 
     i=i+1 
     time.sleep(1) 

Il y a beaucoup de serveurs wsgi mais voici un exemple avec la référence un de python std lib:

from wsgiref.simple_server import make_server 

httpd = make_server('', 8000, app) 
httpd.serve_forever() 
+0

J'utilise l'implémentation du serveur google apps - savez-vous gérer cela? – Wilq32