Explorar o código

Add more client examples

Daniel Gruno %!s(int64=5) %!d(string=hai) anos
pai
achega
a1179e2bdd
Modificáronse 3 ficheiros con 72 adicións e 1 borrados
  1. 21 1
      README.md
  2. 36 0
      clients/nodejs/client.js
  3. 15 0
      clients/python/client.py

+ 21 - 1
README.md

@@ -102,7 +102,27 @@ def process_event(payload):
 
 def main():
     pubsub = asfpy.pubsub.Listener('http://localhost:2069')
-    pubsub.attach(process_event) # poll forever
+    pubsub.attach(process_event, raw=True) # poll forever
+~~~
+
+### Listening for events via node.js
+Using the PyPubSub class in [`clients/nodejs/client.js`](clients/nodejs/client.js) one can 
+listen for pubsub events and process them using node.js:
+
+~~~javascript
+function process(payload) {
+    // ping-back?
+    if (payload.stillalive) {
+        console.log("Got a ping-back");
+    // Actual payload? process it!
+    } else {
+        console.log("Got a payload from PyPubSub!");
+        console.log(payload);
+    }
+}
+
+const pps = new PyPubSub('http://localhost:2069/');
+pps.attach(process);
 ~~~
 
 ### Accessing older payloads via the backlog catalogue

+ 36 - 0
clients/nodejs/client.js

@@ -0,0 +1,36 @@
+const http = require("http");
+const https = require("https");
+
+class PyPubSub {
+    constructor(url) {
+        this.url = url;
+        this.getter = url.match(/^https/i) ? https : http;
+    }
+
+    attach(func) {
+        this.getter.get(this.url, res => {
+            res.setEncoding("utf8");
+            res.on("data", data => {
+                let payload = JSON.parse(data);
+                func(payload);
+              });
+        });
+    }
+}
+
+
+// Test
+function process(payload) {
+    // ping-back?
+    if (payload.stillalive) {
+        console.log("Got a ping-back");
+    // Actual payload? process it!
+    } else {
+        console.log("Got a payload from PyPubSub!");
+        console.log(payload);
+    }
+}
+
+const pps = new PyPubSub('http://localhost:2069/');
+pps.attach(process);
+

+ 15 - 0
clients/python/client.py

@@ -0,0 +1,15 @@
+#!/usr/bin/env python3
+import asfpy.pubsub
+
+
+def process(payload):
+    keys = list(payload.keys())
+    if keys == ['stillalive']:
+        print("Got a ping-back from pubsub")
+    else:
+        print("Got a payload!")
+        print(payload)
+
+
+pps = asfpy.pubsub.Listener('http://localhost:2069/')
+pps.attach(process, raw=True)