class LogSockJSProtocol(Protocol): def __init__(self, factory): self.factory = factory self.loop = LoopingCall(self.check_log) self.log_provider = None def connectionMade(self): self.factory.transports.add(self.transport) out.info('sockjs /logs connected') self.log_provider = LogProvider(self.factory.chute) self.log_provider.attach() self.loop.start(1.0) def check_log(self): logs = self.log_provider.get_logs() for log in logs: self.transport.write(json.dumps(log)) def connectionLost(self, reason): if self.transport in self.factory.transports: self.factory.transports.remove(self.transport) out.info('sockjs /logs disconnected') self.loop.stop() self.log_provider.detach() self.log_provider = None
class LogSockJSProtocol(WebSocketServerProtocol): def __init__(self, factory): WebSocketServerProtocol.__init__(self) self.factory = factory self.loop = LoopingCall(self.check_log) self.log_provider = None def onOpen(self): out.info('sockjs /logs connected') self.log_provider = LogProvider(self.factory.chute) self.log_provider.attach() self.loop.start(1.0) def check_log(self): logs = self.log_provider.get_logs() for log in logs: self.sendMessage(json.dumps(log)) def onClose(self, wasClean, code, reason): out.info('sockjs /logs disconnected') self.loop.stop() self.log_provider.detach() self.log_provider = None
class ChuteLogWsProtocol(WebSocketServerProtocol): def __init__(self, factory): WebSocketServerProtocol.__init__(self) self.factory = factory self.loop = LoopingCall(self.check_log) self.log_provider = None def onOpen(self): out.info('ws /chute_logs connected') self.log_provider = LogProvider(self.factory.chute_name) self.log_provider.attach() self.loop.start(0.5) def check_log(self): logs = self.log_provider.get_logs() for log in logs: self.sendMessage(log) def onClose(self, wasClean, code, reason): out.info('ws /chute_logs disconnected: {}'.format(reason)) self.loop.stop() self.log_provider.detach() self.log_provider = None