diff --git a/umqtt.robust/umqtt/robust.py b/umqtt.robust/umqtt/robust.py
index 7ee40e020..582628c2e 100644
--- a/umqtt.robust/umqtt/robust.py
+++ b/umqtt.robust/umqtt/robust.py
@@ -26,6 +26,18 @@ def reconnect(self):
                 i += 1
                 self.delay(i)
 
+    def with_retry(self, meth, *args, **kwargs):
+        while 1:
+            try:
+                return meth(*args, **kwargs)
+            except OSError as e:
+                print("%r" % e)
+            time.sleep(0.5)
+            self.reconnect()
+
+    def publish_(self, *args, **kwargs):
+        return self.with_retry(super().publish, *args, **kwargs)
+
     def publish(self, topic, msg, retain=False, qos=0):
         while 1:
             try:
diff --git a/umqtt.simple/example_pub_ssl.py b/umqtt.simple/example_pub_ssl.py
new file mode 100644
index 000000000..9d2f62dd9
--- /dev/null
+++ b/umqtt.simple/example_pub_ssl.py
@@ -0,0 +1,13 @@
+from umqtt.simple import MQTTClient
+
+# Test reception e.g. with:
+# mosquitto_sub -t foo_topic
+
+def main(server="localhost"):
+    c = MQTTClient("umqtt_client", server, ssl=True)
+    c.connect()
+    c.publish(b"foo_topic", b"hello")
+    c.disconnect()
+
+if __name__ == "__main__":
+    main()
diff --git a/umqtt.simple/example_pubsub.py b/umqtt.simple/example_pubsub.py
new file mode 100644
index 000000000..1d0f4451f
--- /dev/null
+++ b/umqtt.simple/example_pubsub.py
@@ -0,0 +1,13 @@
+import time
+from umqtt.simple import MQTTClient
+
+def sub_cb(topic, msg):
+    print((topic, msg))
+
+c = MQTTClient("uqmtt_client", "localhost")
+c.connect()
+c.subscribe(b"foo_topic")
+c.publish(b"foo_topic", b"hello")
+while 1:
+    c.wait_msg()
+c.disconnect()