]> www.average.org Git - loctrkd.git/blobdiff - gps303/wsgateway.py
Show coordinates on the map
[loctrkd.git] / gps303 / wsgateway.py
index 15a6517d0c61ac14535f346545b1c03607abcc1a..a4a0b6d441d31d8a42800adc3e3d77eebd196547 100644 (file)
@@ -37,6 +37,11 @@ def try_http(data, fd, e):
             fd,
             headers,
         )
+        try:
+            pos = resource.index("?")
+            resource = resource[:pos]
+        except ValueError:
+            pass
         if op == "GET":
             if htmldata is None:
                 return (
@@ -130,9 +135,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 +181,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 +216,13 @@ def runserver(conf):
             tosend = []
             topoll = []
             tostop = []
-            events = poller.poll(1000)
+            events = poller.poll(5000)
             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: