 xlisten(+Redis, 
+Streams, +Options)
xlisten(+Redis, 
+Streams, +Options)XREAD on one or more Streams on the 
server Redis. For each message that arrives, call broadcast/1, 
where Data is a dict representing the message.
broadcast(redis(Redis, Stream, Id, Data))
Options:
0 to start get all messages from the epoch 
or $ to get messages starting with the last. Default is $.
Note that this predicate does not terminate. It is normally 
executed in a thread. The following call listens to the streams
key1 and key2 on the default Redis 
server. Using
reconnect(true), the client will try to re-establish a 
connection if the collection got lost.
?- redis_connect(default, C, [reconnect(true)]),
   thread_create(xlisten(C, [key1, key2], [start($)]),
                 _, [detached(true)]).
| Redis | is either a Redis server name (see redis_server/3) or an open connection. If it is a server name, a new connection is opened that is closed if xlisten/3 completes. |