4 Stimmen

So verhindern Sie, dass gestreamte Comet-Kommunikation im Browser gepuffert wird

Ich versuche, Datenpakete von meinem HTTP-Server an einen Browser zu senden, indem ich einen Comet "forever iframe" verwende und ihn mit Skript-Tags vom Server füttere, die den Header Transfer-Encoding: chunked verwenden. Ich stelle fest, dass meine Skript-Tags nicht sofort interpretiert werden und ich eine Reihe von Chunks senden muss, bevor der Browser auf sie reagiert. Im Falle des IE8 scheint dies etwa 256 Byte an Daten zu erfordern (ich habe es nicht genau überprüft), und in Firefox 3.5.7 scheint es etwas mehr als ein Kilobyte zu sein. Ich habe es noch nicht geschafft, Chrome dazu zu bringen, überhaupt auf die Script-Tags zu reagieren, bevor die Verbindung geschlossen wird. In allen Fällen werden jedoch alle gepufferten Chunks interpretiert, wenn ich die gepufferten Daten beende (mit dem Chunk "0"). Ich habe einige Referenz zu dieser Art von Verhalten in Safari, aber ich habe keine derartigen Informationen für andere Browser gefunden.

Ich möchte wissen, wie ich diese Skript-Tags zuverlässig ausführen kann, sobald sie gesendet werden, ohne dass eine Art Puffermechanismus ihre Ausführung verzögert?

1voto

bobpoekert Punkte 914

Müssen Sie für immer einen iframe verwenden? Wenn Sie Websockets verwenden und auf Flash-Xml-Sockets zurückgreifen, können Sie alle derzeit verwendeten Browser unterstützen (außer vielleicht auf Feature Phones) und eine echte Socket-Api erhalten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X