From 8ca75e0b11eb712d549d91064358bb816aeef0ec Mon Sep 17 00:00:00 2001 From: "noz (OpenERP)" Date: Mon, 11 Apr 2011 16:45:38 +0530 Subject: [PATCH] [FIX] Sent first chat message to self. bzr revid: noz@tinyerp.com-20110411111538-yxvexkoyldb5xrid --- addons/web_chat/controllers/main.py | 33 ++++++++-------------- addons/web_chat/static/lib/AjaxIM/js/im.js | 4 +-- 2 files changed, 13 insertions(+), 24 deletions(-) diff --git a/addons/web_chat/controllers/main.py b/addons/web_chat/controllers/main.py index ff5b95d6579..adb32c3a7a3 100644 --- a/addons/web_chat/controllers/main.py +++ b/addons/web_chat/controllers/main.py @@ -67,6 +67,7 @@ class PollServer(openerpweb.Controller): } """ mq = req.applicationsession.setdefault("web_chat", PollServerMessageQueue()) + mq.messages = [] #r = 'logged in' #u = generate random.randint(0,2**32) @@ -106,9 +107,9 @@ class PollServer(openerpweb.Controller): def poll(self, req, **kw): mq = req.applicationsession.setdefault("web_chat", PollServerMessageQueue()) - print "================ poll ======= ", kw - # Long Polling - method = kw.get('method') + + # Method: Long Poll + """ --> GET http://im.ajaxim.com/poll?callback=jsonp1302138663582&_1302138663582= <-- 200 OK @@ -132,7 +133,7 @@ class PollServer(openerpweb.Controller): """ - msg = [] + msg = '[]' for i in range(5): received_msg = mq.read('Guest1', i); @@ -140,27 +141,14 @@ class PollServer(openerpweb.Controller): msg = self._pollParseMessages(received_msg) time.sleep(1) else: - msg = [] + msg = '[]' time.sleep(1) - - # for i in range(60): - #r = mq.read(username,timestamp) - # if messages - # return r - # if no message sleep 2s and retry - # sleep 2 - # else - # return emptylist - msg = '[{"t":"m","s":"Guest130214008855.5","r":"Guest130214013134.26","m":"xxxxxx"}]' - -# # it's http://localhost:8002/web_chat/pollserver/poll?method=long?callback=jsonp1302147330483&_1302147330483= - - return '%s'%kw.get('callback', '') + '(' + msg + ');' + # it's http://localhost:8002/web_chat/pollserver/poll?callback=jsonp1302147330483&_1302147330483= + return '%s'%kw.get('callback', '') + '(' + str(msg) + ');' @openerpweb.httprequest def send(self, req, **kw): - print "========= send ========", kw to = kw.get('to') message = kw.get('message') @@ -192,7 +180,7 @@ class PollServer(openerpweb.Controller): if message: mq.write(m_type="m", m_from=req.applicationsession['current_user'], m_to=to, m_message=message, m_group="Users") - return {'r': 'sent'} + return '%s'%kw.get('callback', '') + '(' + simplejson.dumps({'r': 'sent'}) + ')' else: return {'r': 'error', 'e': 'send error'} @@ -221,7 +209,8 @@ class PollServer(openerpweb.Controller): def _pollParseMessages(self, messages): msg_arr = [] for msg in messages: - msg_arr.append({'t': msg['type'], 's': msg['from'], 'r': msg['to'], 'm': msg['message']}) + msg_arr.append({"t": str(msg['type']), "s": str(msg['from']), "r": str(msg['to']), "m": str(msg['message'])}) + return msg_arr def _sanitize(self, message): diff --git a/addons/web_chat/static/lib/AjaxIM/js/im.js b/addons/web_chat/static/lib/AjaxIM/js/im.js index 42c3f743204..9ab195fd6b6 100644 --- a/addons/web_chat/static/lib/AjaxIM/js/im.js +++ b/addons/web_chat/static/lib/AjaxIM/js/im.js @@ -105,7 +105,7 @@ login: this.settings.pollServer + '/login', logout: this.settings.pollServer + '/logout', register: this.settings.pollServer + '/register', - poll: this.settings.pollServer + '/poll?method=' + this.settings.pollType, + poll: this.settings.pollServer + '/poll', send: this.settings.pollServer + '/send', status: this.settings.pollServer + '/status', resume: this.settings.pollServer + '/resume' @@ -116,7 +116,7 @@ queryStrRx = new RegExp('[?](.+)$'), subdomainRx = new RegExp('((http[s]?:)?//)?(.+?)[.]' + window.location.host, 'i'); $.each(this.actions, function(name, action) { - if(name == 'poll') { + if(name == 'poll' || name == 'send') { if(self.settings.pollType != 'comet') action += (queryStrRx.test(action[1]) ? '&' : '?') + 'callback=?';