X-Git-Url: http://www.average.org/gitweb/?p=loctrkd.git;a=blobdiff_plain;f=gps303%2Fwsgateway.py;h=7756fe9d52ae10d0bcdb8012869ac7e78f3393b9;hp=f9f5c6a2ad936f33c9961419245c65de14414dcd;hb=96538346bd332d76d2cac5d6a0ef2b4e4a40de30;hpb=0c9ed98ee47630e854047f1e0fcf29326e137e36 diff --git a/gps303/wsgateway.py b/gps303/wsgateway.py index f9f5c6a..7756fe9 100644 --- a/gps303/wsgateway.py +++ b/gps303/wsgateway.py @@ -17,6 +17,7 @@ from wsproto.utilities import RemoteProtocolError import zmq from . import common +from .backlog import blinit, backlog from .zmsg import LocEvt log = getLogger("gps303/wsgateway") @@ -196,14 +197,7 @@ class Clients: def recv(self, fd): clnt = self.by_fd[fd] - msgs = clnt.recv() - if msgs is None: - return None - result = [] - for msg in msgs: - log.debug("Received: %s", msg) - result.append(msg) - return result + return clnt.recv() def send(self, msg): towrite = set() @@ -230,6 +224,7 @@ class Clients: def runserver(conf): global htmlfile + blinit(conf.get("storage", "dbfn"), conf.get("opencellid", "dbfn")) htmlfile = conf.get("wsgateway", "htmlfile") zctx = zmq.Context() zsub = zctx.socket(zmq.SUB) @@ -280,6 +275,10 @@ def runserver(conf): else: for msg in received: log.debug("Received from %d: %s", sk, msg) + if msg.get("type", None) == "subscribe": + imei = msg.get("imei") + if imei: + tosend.extend(backlog(imei[0], 5)) towrite.add(sk) elif fl & zmq.POLLOUT: log.debug("Write now open for fd %d", sk)