import json
from twisted.internet.protocol import Protocol, Factory
from paradrop.base.output import out
[docs]class StatusSockJSProtocol(Protocol):
def __init__(self, factory):
self.factory = factory
[docs] def connectionMade(self):
self.factory.transports.add(self.transport)
out.info('sockjs /status connected')
[docs] def dataReceived(self, data):
if (data == 'refresh'):
status = self.factory.system_status.getStatus()
self.transport.write(json.dumps(status))
[docs] def connectionLost(self, reason):
if self.transport in self.factory.transports:
self.factory.transports.remove(self.transport)
out.info('sockjs /status disconnected')
[docs]class StatusSockJSFactory(Factory):
def __init__(self, system_status):
self.system_status = system_status
self.transports = set()
[docs] def buildProtocol(self, addr):
return StatusSockJSProtocol(self)