Пример #1
0
class DebloxSocketServer(threading.Thread):
    """
    This class is a generic websocket server class.

    """

    # setup the logger
    logger = logging.getLogger("DebloxSocketServer")
    ch = logging.StreamHandler()
    ch.setLevel(logging.DEBUG)

    logger.setLevel(logging.DEBUG)
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    ch.setFormatter(formatter)
    logger.addHandler(ch)

    def __init__(self, port=8090, **kwargs):
        threading.Thread.__init__(self)
        self.setDaemon(True)
        self.logger.debug("starting init, port: %s" % port)
        self.port = port
        self.server = None
        self.logger.debug("init completed")

    def serve_forever(self):
        self.__serving = True
        while self.__serving:
            self.logger.debug("Running WS")
            self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            self.s.bind(('0.0.0.0', self.port))
            self.s.listen(1)
            self.conn, self.cli_addr = self.s.accept()
            self.logger.debug("listener setup, starting WS")
            self.ws = WebsocketServer(self.conn, self.port, self.onopen, self.onmessage, self.onerror, None)
            self.logger.debug("WS Run complete")

    def chat(self, id):
        while self.ws.readyState == 1:
            msg = sys.stdin.readline()
            self.ws.send(msg)

    def onopen(self):
        thread.start_new_thread(self.chat, ('', self.ws))

    def onmessage(self, data):
        print data

    def onerror(self):
        print "error occurred. closing conection"
        self.ws.readyState = 3
        self.conn.close()
        sys.exit(1)

    def shutdown(self):
        self.logger.debug("Shutdown called for %s" % self)
        self.conn.close()
        self.s.close()
        self.ws.close()
        sys.exit(0)
Пример #2
0
 def serve_forever(self):
     self.__serving = True
     while self.__serving:
         self.logger.debug("Running WS")
         self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
         self.s.bind(('0.0.0.0', self.port))
         self.s.listen(1)
         self.conn, self.cli_addr = self.s.accept()
         self.logger.debug("listener setup, starting WS")
         self.ws = WebsocketServer(self.conn, self.port, self.onopen, self.onmessage, self.onerror, None)
         self.logger.debug("WS Run complete")