web.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #!/usr/bin/env python3
  2. import os
  3. import json
  4. from datetime import datetime
  5. from websocket_server import WebsocketServer
  6. from qmanager import qManager
  7. import urllib
  8. # Port on which server will run.
  9. PORT = 8080
  10. BASE_PATH='/backend/' #changes based on webserver
  11. last_msg = datetime.now()
  12. def send_status(server, client=None, force=False):
  13. global last_msg
  14. if client is None and not force:
  15. if (datetime.now() - last_msg).total_seconds() < 2:
  16. return
  17. last_msg = datetime.now()
  18. status = { 'SEARCH': q.search_status(), 'BOOKS': q.books_status()}
  19. if client is None:
  20. ws.send_message_to_all(json.dumps(status))
  21. else:
  22. server.send_message(client, json.dumps(status))
  23. def new_client(client, server):
  24. send_status(server, client)
  25. def message_received(client, server, message):
  26. j = json.loads(message)
  27. print(j)
  28. if j['type'].upper() == 'SEARCH':
  29. q.new_search(j['book'], j['extension'])
  30. if j['type'].upper() == 'BOOK':
  31. q.new_dl(j['book'])
  32. send_status(server)
  33. def updated(force=False):
  34. send_status(ws, force=force)
  35. if __name__ == '__main__':
  36. q = qManager(updated)
  37. ws = WebsocketServer(8081, host='127.0.0.1')
  38. ws.set_fn_new_client(new_client)
  39. ws.set_fn_message_received(message_received)
  40. ws.run_forever()