Anders and Briegel in Python
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

SimpleExampleServer.py 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. '''
  2. The MIT License (MIT)
  3. Copyright (c) 2013 Dave P.
  4. '''
  5. import signal
  6. import sys
  7. import ssl
  8. from SimpleWebSocketServer import WebSocket, SimpleWebSocketServer, SimpleSSLWebSocketServer
  9. from optparse import OptionParser
  10. class SimpleEcho(WebSocket):
  11. def handleMessage(self):
  12. print self.data
  13. self.sendMessage(self.data)
  14. def handleConnected(self):
  15. pass
  16. def handleClose(self):
  17. pass
  18. clients = []
  19. class SimpleChat(WebSocket):
  20. def handleMessage(self):
  21. for client in clients:
  22. if client != self:
  23. client.sendMessage(self.address[0] + u' - ' + self.data)
  24. def handleConnected(self):
  25. print (self.address, 'connected')
  26. for client in clients:
  27. client.sendMessage(self.address[0] + u' - connected')
  28. clients.append(self)
  29. def handleClose(self):
  30. clients.remove(self)
  31. print (self.address, 'closed')
  32. for client in clients:
  33. client.sendMessage(self.address[0] + u' - disconnected')
  34. if __name__ == "__main__":
  35. parser = OptionParser(usage="usage: %prog [options]", version="%prog 1.0")
  36. parser.add_option("--host", default='', type='string', action="store", dest="host", help="hostname (localhost)")
  37. parser.add_option("--port", default=8000, type='int', action="store", dest="port", help="port (8000)")
  38. parser.add_option("--example", default='echo', type='string', action="store", dest="example", help="echo, chat")
  39. parser.add_option("--ssl", default=0, type='int', action="store", dest="ssl", help="ssl (1: on, 0: off (default))")
  40. parser.add_option("--cert", default='./cert.pem', type='string', action="store", dest="cert", help="cert (./cert.pem)")
  41. parser.add_option("--ver", default=ssl.PROTOCOL_TLSv1, type=int, action="store", dest="ver", help="ssl version")
  42. (options, args) = parser.parse_args()
  43. cls = SimpleEcho
  44. if options.example == 'chat':
  45. cls = SimpleChat
  46. if options.ssl == 1:
  47. server = SimpleSSLWebSocketServer(options.host, options.port, cls, options.cert, options.cert, version=options.ver)
  48. else:
  49. server = SimpleWebSocketServer(options.host, options.port, cls)
  50. def close_sig_handler(signal, frame):
  51. server.close()
  52. sys.exit()
  53. signal.signal(signal.SIGINT, close_sig_handler)
  54. server.serveforever()