예제 #1
0
파일: server.py 프로젝트: leQu/tddd97
def socket_connect():
    if request.environ.get("wsgi.websocket"):
        ws = request.environ["wsgi.websocket"]
        while True:
            try:
                message = ws.receive()
                message = json.loads(message)

                # when login, the socket + email is saved
                if "email" == message["type"]:
                    email = message["data"]
                    if email in current_sockets:
                        data = {'type': 'logout'}
                        current_sockets[email].send(json.dumps(data))
                    current_sockets[email] = ws

                # when stats update is requested
                elif "stats" == message["type"]:
                    email = logged_in_users.get(message["token"])
                    data = {
                        'type': 'stats',
                        'messages': len(database_helper.get_user_messages(email)),
                        'users': len(logged_in_users),
                        'pageviews': database_helper.get_user_page_views(email)
                    }
                    ws.send(json.dumps(data))

            except WebSocketError:
                break
예제 #2
0
def send_fresh_stats_to_users():
    for email in current_sockets:
        data = {
            'type': 'stats',
            'messages': len(database_helper.get_user_messages(email)),
            'users': len(logged_in_users),
            'pageviews': database_helper.get_user_page_views(email)
        }
        current_sockets[email].send(json.dumps(data))