#!/bin/env python3 import websocket import json import random import zmq from pprint import pprint __version__ = "2.0.0b2" ws = None uri = "ws://localhost:5080" ws = websocket.create_connection(uri) context = zmq.Context() socket = context.socket(zmq.REP) socket.bind("tcp://*:5555") def sendsmpmessage(target, message): global ws print("Sendmessage %s called to %s" % (message, target)) msg = ("%s %s" % (target, message)) # Create a unique correlation ID command = { "corrId": f"id{random.randint(0, 999999)}", "cmd": msg, } json_command = json.dumps(command) """ Connects to WebSocket server, sends a message, and returns the response """ if ws is None: uri = "ws://localhost:5080" ws = websocket.create_connection(uri) # Blocking WebSocket connection ws.send(json_command) # Send message to WebSocket responsejson = ws.recv() # Receive response response = json.loads(responsejson) # ws.close() for chatitem in response['resp']['chatItems']: statusdict = chatitem['chatItem']['meta']['itemStatus'] try: status = statusdict['sndProgress'] except KeyError: print("FAILED") status = 'FAILED' else: smessage = chatitem['chatItem']['meta']['itemText'] print("Message '%s' sent over websocket to %s, status was %s" % (smessage, target, status)) if status == 'complete' or status == 'partial': return True else: return False if __name__ == '__main__': while True: zmqmessage = socket.recv_string() print(f"Received request: {zmqmessage}") result = True decoded = json.loads(zmqmessage) pprint(decoded) result = sendsmpmessage(decoded.get('target'), decoded.get('message')) print(result) if result is True: socket.send_string("sent") else: socket.send_string("failed")