diff --git a/Lab_4/Twidder/server.py b/Lab_4/Twidder/server.py index d8b132cbeecff3417d820e9a1b25d4e9a0ba1be1..11eecf98996b120df72de081e822b87b1eae8e07 100644 --- a/Lab_4/Twidder/server.py +++ b/Lab_4/Twidder/server.py @@ -5,6 +5,8 @@ import uuid import database_helper import json from flask_sock import Sock +import threading + from gevent import monkey monkey.patch_all() @@ -28,7 +30,7 @@ sock = Sock(app) app.debug = True session = {'token': ("email", "wsObj")} - +lock = threading.Lock() @app.route('/') @@ -86,6 +88,8 @@ def echo(socket): # sign out if I am logged in somewhere else print(session) + + lock.acquire() for token in list(session.keys()): if session[token][0] == myEmail and token != myToken: if session[token][1] != "": @@ -93,6 +97,8 @@ def echo(socket): session[token][1].close() print("You got kicked out") session.pop(token) + lock.release() + print(session) # Put socket in global dict so server knows my connection is open @@ -127,7 +133,9 @@ def sign_in(): # Generate a random token token = str(uuid.uuid4()) + lock.acquire() session[token] = (email, "") + lock.release() # return the token in the Authorization header response = make_response(jsonify({})) #"Server inserted user data into database" @@ -195,15 +203,16 @@ def sign_out(): return jsonify({}), tmp[1] # Close my socket - print(session) + lock.acquire() try: session[token][1].close() except: pass # samma sak som ingenting - print(session) - - # set user to not logged in - session.pop(token) + try: + session.pop(token) + except: + pass + lock.release() return jsonify({}), 204 # "Successfully signed out") diff --git a/Lab_4/Twidder/static/client.js b/Lab_4/Twidder/static/client.js index a26ecfd7db9b9565e339e3f20f32f466cd9daa4a..5f255d900ae71f473c12bc2fb92bd9749fc6d44d 100644 --- a/Lab_4/Twidder/static/client.js +++ b/Lab_4/Twidder/static/client.js @@ -67,10 +67,6 @@ function connectWithSocket() { switch (response["action"]) { case "signOut": - // If old socket open, close it. - socket.close(); - console.log(response); - // Reset token in the localStorage localStorage.setItem("currentUser", ""); localStorage.setItem("homeEmail", "");