diff --git a/Lab_3/Twidder/server.py b/Lab_3/Twidder/server.py index ca92bba041d7a53e5c257573649bbe54f119b1b8..1b0053efa2b69792c76f5b79561e3117f8141b7d 100644 --- a/Lab_3/Twidder/server.py +++ b/Lab_3/Twidder/server.py @@ -4,6 +4,9 @@ from gevent.pywsgi import WSGIServer import uuid import database_helper +from geventwebsocket.handler import WebSocketHandler + + #Remember: #PUT for updating data, POST for adding new data @@ -17,21 +20,6 @@ import database_helper #Questions: #Why does localhost in URL not work? -def task(pid): - """ - Some non-deterministic task - """ - gevent.sleep(random.randint(0,2)*0.001) - print('Task %s done' % pid) - -def asynchronous(): - threads = [gevent.spawn(task, i) for i in xrange(10)] - gevent.joinall(threads) - -print('Asynchronous:') -asynchronous() - -#---------------------#---------------------#---------------------#--------------------- app = Flask(__name__, static_url_path = '/static')#in case flask does not recognize folder app.debug = True @@ -71,6 +59,18 @@ def input_has_error(input): return True, 400, "" return False, 0, str +@app.route("/myServer/socket", methods=['POST']) +def createSocket(): + """Establish socket connection""" + if request.environ.get('wsgi.websocket'): + ws = request.environ['wsgi.websocket'] + while True: + message = ws.wait() + ws.send(message) + return + + + @app.route("/myServer/sign_in", methods=['POST']) def sign_in(): @@ -336,7 +336,6 @@ def post_message(): if __name__ == '__main__': - app.run(port=5000, debug=True) - -http_server = WSGIServer(('127.0.0.1:5000/myServer', 5000), app) -http_server.serve_forever() + # app.run(port=5000, debug=True) + http_server = WSGIServer(('127.0.0.1', 5000), app, handler_class = WebSocketHandler) + http_server.serve_forever() diff --git a/Lab_3/Twidder/static/client.js b/Lab_3/Twidder/static/client.js index bbdae2cb08f1e256ab11f29b432a7726ff0ff087..a0b3905c53934760f7a5df1d6a0f7135adfadb0f 100644 --- a/Lab_3/Twidder/static/client.js +++ b/Lab_3/Twidder/static/client.js @@ -5,10 +5,29 @@ var welcomeDiv; var profileDiv; var url = 'http://127.0.0.1:5000/myServer/'; var curr_page = ""; +var socket; // source "/Users/lorenzo/OneDrive - Linköpings universitet/Skola/DI3B/TDDD97/virtualenv/bin/activate" +// socket.onopen = function (event) { +// let token = localStorage.getItem("currentUser"); + // Todo - ändra så att tken skickas i header istället + // socket.send(JSON.stringify({token: token})); +//}; +// socket.onmessage = function (event) { +// console.log(event.data); +// }; + + +// webSocket.onopen = function(event){ +// webSocket.send(JSON.stringify({email: "o@o", password: "oo"})) +// }; + +// webSocket.onmessage = function (event) { +// console.log(event.data); +// }; + // - - - - - Init Request Objects - - - - - // // Sign In Request Object @@ -25,6 +44,17 @@ signInRequest.onreadystatechange = function() { // Changes the view to profile view and loads user info displayView(); setUserDetails("home"); + + // Establish web socket + socket = new WebSocket(url + "socket"); + + socket.onopen = function (event) { + + // Todo - ändra så att token skickas i header istället + socket.send(JSON.stringify({token: token})); + socket.send(JSON.stringify({email: "o@o", password: "oo" })); + } + } else if (this.status == 400) { errorMessage.innerHTML = "Error 400: Incorrect format"; @@ -406,6 +436,7 @@ function sign_in() { else { // Sending sign_in request to "server" + signInRequest.open("POST", url + "sign_in", true); signInRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); signInRequest.send(JSON.stringify({email: email,password: password}));