30. Long Polling $.ajax({ type: "GET", url: "http://localhost:8080/", async: true, /* If set to non-async, browser shows page as "Loading.."*/ cache: false, timeout:50000, /* Timeout in ms */ dataType: "jsonp", jsonp: "callback", success: function(data){ add_msg(data); setTimeout( 'waitForMsg()', /* Request next message */ 1000 /* ..after 1 seconds */ ); },
31. Long Polling class ChatServer(resource.Resource): … def render_GET(self, request): chat_d = defer.Deferred() chat_d.addCallback(partial(chat_msg, request)) chat_d.addErrback(println, "chat error") self.deferred_list.append(chat_d) return server.NOT_DONE_YET
32. Message Post class ChatServer(resource.Resource): deferred_list = [] def render_POST(self, request): newdata = request.content.getvalue() data = json.loads(newdata) for i in range(len(self.deferred_list)): d = self.deferred_list.pop() d.callback(data) return 'OK'