I have a complete working example that can be used to get the data using Python 3:
 
	 
 
import websocket
import _thread
import json
import time
import rel
def on_message(ws, message):
    print(message)
def on_error(ws, error):
    print(error)
def on_close(ws, close_status_code, close_msg):
    print("### closed ###")
def on_open(ws):
    print("Opened connection")
request = {
       "command": "about.read",
       "name": "about"
}
request2 = {
    "command": "offsets.declare",
    "name": "myOffsets",
    "offsets": [
            {"name": "altitude", "address": 0x0570, "type": "int", "size": 8},
            {"name": "avionicsMaster", "address": 0x2E80, "type": "uint", "size": 4},
            {"name": "heading", "address": 0x0580, "type": "uint", "size": 4},
            {"name": "aircraftName", "address": 0x3D00, "type": "string", "size": 256}
    ]
}
request3 = {
    "command": 'offsets.read',
    "name": "myOffsets",
    "interval": 100
}
if __name__ == "__main__":
    ws = websocket.WebSocketApp("ws://MYIP:PORT/fsuipc/",
                              subprotocols=["fsuipc"],
                              on_open=on_open,
                              on_message=on_message,
                              on_error=on_error,
                              on_close=on_close)
    ws.run_forever(dispatcher=rel, reconnect=5)
    ws.send(json.dumps(request))
    ws.send(json.dumps(request2))
    ws.send(json.dumps(request3))
    rel.signal(2, rel.abort)  # Keyboard Interrupt
    rel.dispatch()