2010-02-19 19 views
10

Wie kann ich Long-Polling mit netty Rahmen tun? Sagen Sie zum Beispiel ich holen http://localhost/waitforxlang polling netty nio framework java

aber waitforx ist asynchron, weil es auf ein Ereignis warten muss? Sagen wir zum Beispiel, dass es etwas aus einer blockierenden Warteschlange holt (kann nur abgerufen werden, wenn Daten in der Warteschlange sind). Wenn ich Artikel aus der Warteschlange erhalte, möchte ich Daten zurück zum Client senden. Hoffentlich kann mir jemand Tipps geben, wie man das macht.

Vielen Dank

Antwort

10

Sie könnten eine Antwort-Header schreiben zuerst, und dann den Körper (Inhalt) von anderen Thread später senden.

+0

Funktioniert das tatsächlich? Kannst du in einen Kanal aus einem anderen Thread schreiben? Es ist Thread-sicher? –

+0

Ja, es ist threadsicher –

+1

Wie weiß der "andere Thread", welcher Kanal verwendet werden soll? Zum Beispiel, client1 macht eine lange Umfrage, muss ich den Kanal in eine HashMap setzen und sie holen, sobald das Ereignis aufgetreten ist, damit ich den partiellen Inhalt senden kann? – pkrish

3

Sie können netty-socketio Projekt verwenden. Es ist die Implementierung von Socket.IO Server mit langer Polling-Unterstützung. Auf der Webseite können Sie Socket.IO client Javascript Lib verwenden.

0

Sie könnten auch die folgenden in [sfnrpc] tun: http://code.google.com/p/sfnrpc

Object object = RPCClient.getInstance().invoke("#URN1","127.0.0.1:6878","echo",true,60,"", objArr,classArr, sl); 

Die wahren Ursachen Kommunikation synchron zu sein.