Esempio n. 1
0
    def open(self):
        """
        1, 检查当前客户端时候已经打开浏览器窗口,是,发送错误提示信息
        """
        email = self.get_secure_cookie('email')
        nickname = self.get_secure_cookie('nickname')
        if ClientManager.is_client_connected(email):
            app_log.exception("client[{0}] already connected!".format(email))
            self.write_message({

                'type': 'system.error',
                'message': '检测到当前用户已经打开一个窗口,当前窗口自动失效'

            })
        else:
            clients = ClientManager.get_clients()
            # 保存客户端信息
            ClientManager.add_client(str(id(self)), nickname=nickname, email=email, handler=self)
            data = {
                'type': 'add',
                'clients': []
            }
            for key in clients.keys():
                client = clients[key]
                data['clients'].append({
                    "type": "add",
                    "id": client.identity,
                    "nickname": client.nickname,
                    "avatar": client.avatar,
                    "email": client.email
                })
            self.send_to_all(json.dumps(data))
Esempio n. 2
0
 def on_close(self):
     email = self.get_secure_cookie('email')
     _id = str(id(self))
     if ClientManager.is_effective_connect(_id):
         ClientManager.remove_client(email)
         try:
             data = {
                 "type": "out",
                 "id": _id
             }
             self.send_to_all(json.dumps(data))
         except Exception as ex:
             app_log.exception(ex)
     else:
         app_log.info("非有效连接,关闭页面不影响其他已经打开的页面")
Esempio n. 3
0
File: auth.py Progetto: cls1997/chat
 def post(self):
     nickname = self.get_argument("nickname")
     email = self.get_argument("email")
     if ClientManager.get_client_by_email(email):
         self.render("login.html", error="邮箱正在使用中...", background = None)
     self.set_secure_cookie('email', email)
     self.set_secure_cookie('nickname', nickname)
     self.redirect("/chat")
Esempio n. 4
0
 def post(self):
     nickname = self.get_argument("nickname")
     email = self.get_argument("email")
     if ClientManager.get_client_by_email(email):
         self.render("login.html", error="邮箱正在使用中...", background=None)
     self.set_secure_cookie('email', email)
     self.set_secure_cookie('nickname', nickname)
     self.redirect("/chat")
Esempio n. 5
0
    def work(self, item):

        """
        @param item: redis 消息对象
        """
        print ">>>>>>>>>>>>>>>>>>>>>>>>>>>>"
        data = item['data']
        if data == 1L:
            return
        app_log.info(data)
        try:
            data = json.loads(data)
            if data.get('to_email') and (data.get('to_email') != 'groups'):
                ClientManager.send_to(data.get('from_email'), data.get('to_email'), data)
            else:
                ClientManager.send_to_all(data)
        except Exception as ex:
            app_log.exception(ex)
Esempio n. 6
0
 def work(self, item):
     """
     @param item: redis 消息对象
     """
     print ">>>>>>>>>>>>>>>>>>>>>>>>>>>>"
     data = item['data']
     if data == 1L:
         return
     app_log.info(data)
     try:
         data = json.loads(data)
         if data.get('to_email') and (data.get('to_email') != 'groups'):
             ClientManager.send_to(data.get('from_email'),
                                   data.get('to_email'), data)
         else:
             ClientManager.send_to_all(data)
     except Exception as ex:
         app_log.exception(ex)
Esempio n. 7
0
 def send_to_all(self, data):
     ClientManager.publish(self.settings['redis'], options.redis_channel, data)