Anders and Briegel in Python
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.4KB

  1. from websocket_server import WebsocketServer
  2. from SimpleHTTPServer import SimpleHTTPRequestHandler
  3. from BaseHTTPServer import HTTPServer
  4. import os, sys, threading
  5. import webbrowser
  6. import argparse
  7. clients = []
  8. def new_message(client, server, message):
  9. print "Received update from client {}.".format(client["id"])
  10. server.send_message_to_all(message)
  11. def new_client(client, server):
  12. print "Client {} connected.".format(client["id"])
  13. clients.append(client)
  14. def client_left(client, server):
  15. print "Client {} disconnected.".format(client["id"])
  16. clients.remove(client)
  17. if __name__ == '__main__':
  18. parser = argparse.ArgumentParser(description = "ABP websocket server")
  19. parser.add_argument("-v", action="store_false", help="Launch browser")
  20. args = parser.parse_args()
  21. # Change to the right working dir
  22. where = os.path.join(sys.path[0], "../static")
  23. os.chdir(where)
  24. # Start the HTTP server
  25. httpserver = HTTPServer(('', 5001), SimpleHTTPRequestHandler)
  26. thread = threading.Thread(target = httpserver.serve_forever)
  27. thread.daemon = True
  28. thread.start()
  29. if args.v:
  30. webbrowser.open("http://localhost:5001/")
  31. # Start the websocket server
  32. server = WebsocketServer(5000)
  33. server.set_fn_new_client(new_client)
  34. server.set_fn_message_received(new_message)
  35. server.set_fn_client_left(client_left)
  36. server.run_forever()
  37. httpserver.shutdown()