Vom Publisher Daten an Subscriber senden

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Robinbux
User
Beiträge: 2
Registriert: Samstag 22. April 2017, 19:45

Sonntag 4. Februar 2018, 01:38

Moin, ich versuche mittels zeromq eine Art Chatbot zu bauen, aber sehe nicht, wie ich vom Subscriber Daten an den Publisher schicken kann.
Mein derzeitiger Subscriber sieht so aus:

Code: Alles auswählen

import zmq

context = zmq.Context()

print("Connecting to chatbot...")
socket = context.socket(zmq.SUB)
socket.connect('tcp://127.0.0.1:2000')
socket.setsockopt_string(zmq.SUBSCRIBE, '')
name = "Robin"

while True:
    
    message = input("Message: ")
    
    json_data = {
        'name' : name,
        'message' : message
    }
    
    socket.send_json(json_data)
    
    json_recv = socket.recv_json()

    print("{0}".format(json_recv))
Und mein derzeitiger Publisher so:

Code: Alles auswählen

import time
import zmq

context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.bind('tcp://127.0.0.1:5555')

while True:
    
    json_data = socket.recv_json()
    print("{0}".format(json_data))
    time.sleep(1)
    
    socket.send_json(json_data)
Mein Problem ist, dass ich über Subscriber weder Jsons, noch Objects verschicken kann, und über Publisher diese dementsprechend nicht annehmen, wie es noch mit Request und Reply funktionierte.
Leider fand ich im Internet nur Beispiele und Erklärungen für Fälle, in dem lediglich der Publisher Daten versendet, und die Subscriber annehmen.

Gibt es hier eine Möglichkeit, von den Subscribern aus Daten zu verschicken?
DasIch
User
Beiträge: 2472
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Sonntag 4. Februar 2018, 02:47

Nein. Wie die Namen Publisher und Subscriber schon sagen, ist die Idee das Information nur in eine Richtung, zum Subscriber, fließt.
Antworten