X-Git-Url: http://www.average.org/gitweb/?p=loctrkd.git;a=blobdiff_plain;f=gps303%2Fwsgateway.py;h=674a075ed22b6fffc54418c812c5e8413a9cdcdd;hp=15a6517d0c61ac14535f346545b1c03607abcc1a;hb=38f814dde6ea7ff8b33d8f5de49fa8fb007b7e2a;hpb=3cfd06a9124bc710153520bc7f623c71051b2fb9 diff --git a/gps303/wsgateway.py b/gps303/wsgateway.py index 15a6517..674a075 100644 --- a/gps303/wsgateway.py +++ b/gps303/wsgateway.py @@ -130,9 +130,12 @@ class Client: self.write() return msgs - def send(self, imei, message): + def wants(self, imei): + return True # TODO: check subscriptions + + def send(self, message): # TODO: filter only wanted imei got from the client - self.ws_data += self.ws.send(Message(data=message)) + self.ws_data += self.ws.send(Message(data=message.json)) def write(self): try: @@ -173,10 +176,11 @@ class Clients: log.debug("Received: %s", msg) return result - def send(self, msgs): + def send(self, msg): for clnt in self.by_fd.values(): - clnt.send(msgs) - clnt.write() + if clnt.wants(msg.imei): + clnt.send(msg) + clnt.write() def runserver(conf): @@ -207,13 +211,14 @@ def runserver(conf): tosend = [] topoll = [] tostop = [] - events = poller.poll(1000) + events = poller.poll(5000) + log.debug("got events: %s", events) for sk, fl in events: if sk is zsub: while True: try: - msg = zsub.recv(zmq.NOBLOCK) - tosend.append(LocEvt(msg)) + zmsg = LocEvt(zsub.recv(zmq.NOBLOCK)) + tosend.append(zmsg) except zmq.Again: break elif sk == tcpfd: