2008-08-16 21 views
4

Ich wollte immer eine Möglichkeit, eine Socket-Verbindung zu einem Server zu machen und den Server das Seiten-DOM zu manipulieren. Zum Beispiel könnte dies auf einer Aktienkursseite verwendet werden, so dass der Server neue Kurse platzieren kann, sobald diese verfügbar sind.Firefox-Plugin - Sockets

Ich weiß, dies ist eine klassische Einschränkung (Funktion?) Von HTTP-Anfrage/Antwort-Protokoll, aber ich denke, das könnte als Firefox-Plugin implementiert werden (Cross-Browser-Kompatibilität ist nicht wichtig für meine Anwendung). Java/Flash-Lösungen sind nicht akzeptabel, weil sie (soweit ich weiß) in einer Box leben und nicht mit dem DOM interagieren können.

Kann jemand bestätigen, ob dies innerhalb der Fähigkeit eines Firefox-Plugins ist? Hat jemand das schon oder etwas Ähnliches erstellt?

Antwort

2

Sie können sich Comet ansehen, was ein fantastischer Name für eine lange laufende HTTP-Verbindung ist, bei der der Server Aktualisierungen auf die Seite schieben kann.

0

Sie können bei Comet

auch bekannt als server push suchen. Dadurch kann der Server die Clientseite nicht direkt "aktualisieren", sondern alle neuen Daten werden über eine einzige Verbindung an die Seite gesendet.

Natürlich kann ein Firefox extension (sowie plugins, die binäre Bibliotheken, die tun können, was auch immer eine andere Anwendung tun kann) mit Sockets arbeiten. Siehe 1, 2.

2

Es sollte möglich sein. Ich habe eine Xulrunner-Anwendung entwickelt, die sich über Sockets mit einem TCP-Server verbindet. Die Entwicklung von Erweiterungen hätte wahrscheinlich die gleichen Fähigkeiten. Ich benutzte eine Bibliothek von mozdev - JSLib. Überprüfen Sie speziell die networking code. Die Tatsache, dass es eine Firefox add-on for JSlib add-on for Firefox gibt, macht mehr Selbstvertrauen.

Im Wesentlichen, wie ich es verstehe, Sockets sind nicht Teil von JavaScript, aber durch XPCOM, können Sie Raw-Socket-Zugriff erhalten, wie Sie in jeder c/C++ - Anwendung.

Warnung: JSLib scheint nicht viel Aufmerksamkeit zu erhalten und die Mailingliste ist ziemlich spärlich.

1

Java/Flash-Lösungen sind nicht akzeptabel, weil sie (soweit ich weiß) sie in einer Kiste leben und kann nicht mit dem DOM interagieren.

Das stimmt nicht wirklich für Java. Sie können über JavaScript mit Java interagieren und DOM-Änderungen vornehmen.

http://stephengware.com/proj/javasocketbridge/

In diesem Beispiel gibt es zwei JavaScript-Methoden für die Interaktion

Senden:

socket_send("This was sent via the socket\n\n");

Empfangen:

on_socket_get(message){ more_code(message); }