diff --git a/Twidder (Lab3)/database.db b/Twidder (Lab3)/database.db index e782f056d664cc752ac1faf34ef066c94f2b9145..bd4569e38b3cb72f36be9709fc76c9f269776383 100644 Binary files a/Twidder (Lab3)/database.db and b/Twidder (Lab3)/database.db differ diff --git a/Twidder (Lab3)/server.py b/Twidder (Lab3)/server.py index 8b4cafc5917e95901e04e1a51e7c672a98d583e6..e3056fa4e226e39f981a18613fc040320688a126 100644 --- a/Twidder (Lab3)/server.py +++ b/Twidder (Lab3)/server.py @@ -29,6 +29,19 @@ def echo_connection_socket(ws): else: print("email error") +@sockets.route("/profil_view") +def socket_connection(ws): + while True: + token = ws.receive() + email = database_helper.tokenToEmail(token) + if email: + if email in loggedIn_for_ws: + loggedIn_for_ws[email] = ws + print("loggedIn_for_ws : ", loggedIn_for_ws) + else: + print("ERROR : ", email, " not connected") + else: + print("ERROR : ", email, " not found") @app.route("/", methods = ['GET']) def hello_world(): @@ -76,6 +89,7 @@ def sign_in(): } print("token : ", token) if database_helper.addToLoggedInUsers(token, data['email']): + check_reconnection(data['email']) return jsonify(value), 201 else: return "", 409 @@ -244,6 +258,16 @@ def is_valid_email(email): pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$' return re.match(pattern, email) is not None +def check_reconnection(email): + if email in loggedIn_for_ws: + old_ws = loggedIn_for_ws[email] + old_ws.send("Disconnect") + old_ws.close() + print(email, "first connection disconnected") + loggedIn_for_ws[email] = -1 + else: + loggedIn_for_ws[email] = -1 + if __name__ == '__main__': # waitress.serve(app, host='0.0.0.0', port=5000, threads=4) #http://localhost:5000 diff --git a/Twidder (Lab3)/static/client.js b/Twidder (Lab3)/static/client.js index 89997231b97281f5b94626ba342543f739de4170..b4e578644103d57b952f901328b8bcf595108430 100644 --- a/Twidder (Lab3)/static/client.js +++ b/Twidder (Lab3)/static/client.js @@ -27,7 +27,8 @@ function displayWelcomeView() { } function displayProfilView() { - let ws = new WebSocket('ws://' + window.location.host + '/echo_connection') + //let ws = new WebSocket('ws://' + window.location.host + '/echo_connection') + let ws = new WebSocket('ws://' + window.location.host + '/profil_view') ws.onopen = function(event) { console.log("WebSocket connection established !"); ws.send(localStorage.getItem("token"));