2009-08-06 9 views
1

Viele Kunden fragen nach Funktionen wie Instant Messaging (IM) und andere Client-zu-Client (P2P) -Kommunikation für ihre Web-Anwendungen. Wie wird das normalerweise in normalen Webbrowsern gemacht? Zum Beispiel habe ich Demos von Google Wave (und Gmail) gesehen, die in der Lage sind, von einem normalen Browser zu IM zu kommen. Ist das über HTTP? Oder stellt XmlHttpRequest (AJAX) das notwendige Backend für diese Kommunikation bereit?Welche TCP-Protokolle sind für die Client-zu-Client-Kommunikation verwendbar?

Mehr als alles andere frage ich mich, wie kann ein Server den Remote-Client "wecken", sagen wir mal für das Senden einer IM? Oder muss der Client den Nachrichtenserver für neue IMs "abfragen"?

Antwort

3

Normalerweise fragt der Browser den Server nach neuen Nachrichten ab. Ein Ansatz, der oft gemacht wird, um dies effizienter zu machen, ist der 'long poll' (siehe auch this link) - der Server antwortet sofort, wenn er etwas hat; andernfalls wartet es und hält die Verbindung für eine Weile offen. Wenn eine Nachricht eingeht, wacht sie sofort auf und sendet sie, ansonsten kommt sie nach ein paar zehn Sekunden mit einem 'Nein, check back' zurück. Der Client wählt sie sofort erneut aus, um in den Langzeit-Polling-Zustand zurückzukehren.

+0

Eine Idee von anderen Protokollen wie RTMP? http://en.wikipedia.org/wiki/Real_Time_Messaging_Protocol –

+1

Andere Protokolle werden von JavaScript nicht unterstützt. Wenn Sie Flash verwenden, können Sie rohe TCP-Sockets öffnen und tun, was immer Sie wollen. – bdonlan