Python Streaming Tick Data Problem.


  • @dorje I have modified the webSocket.py file code so it is now returning the parsable response and you can get data from it. Below is the code if you are interested and don't want to wait for the development team to fix it. You just need to replace _parse_text_message() function from env/lib/python3/site-packages/smartapi/webSocket.py file with below code. This will return dict.

    def _parse_text_message(self, payload):
            """Parse text message."""
            # Decode unicode data
            if not six.PY2 and type(payload) == bytes:
                payload = payload.decode("utf-8")
                data = base64.b64decode(payload)
    
            try:
                data = bytes((zlib.decompress(data)).decode("utf-8"), 'utf-8')
                data = json.loads(data.decode('utf8').replace("'", '"'))
                data = json.loads(json.dumps(data, indent=4, sort_keys=True))
            except ValueError:
                return
    
            self.on_ticks(self, data)
    

  • @rjbanna said in Python Streaming Tick Data Problem.:

    data = bytes((zlib.decompress(data)).decode("utf-8"), 'utf-8')

    thankyou @rjbanna now it is working 🙂


  • @rjbanna Our development team should fix web socket disconnection issue by tomorrow. If it is fixed during the day, I'll share an update here.


  • Hi @kaleps , @dorje

    As these APIs are in Beta Release. & A Beta phase generally begins when the software is feature complete but likely to contain a number of known or unknown bugs. So we are likely to identify some known/unknown bugs.☺


  • Hi @admin ,

    Any update regarding this issue?


  • @vishant @dorje @mihirk Please check now. We have resolved web socket connection issue.


  • @vishant @dorje @mihirk Please share your feedback.


  • Hi @admin ,

    Tried WebSocket connection but got disconnected to socket after 5 minutes.
    Below is the error which I got in my NodeJS SDK.

    close:: CloseEvent {target: WebSocket, type: 'close', wasClean: true, reason: '', code: 1000}
    arg1: CloseEvent {target: WebSocket, type: 'close', wasClean: true, reason: '', code: 1000}
    code: 1000
    reason: ''
    target: WebSocket {_events: {…}, _eventsCount: 4, _maxListeners: undefined, _binaryType: 'nodebuffer', _closeCode: 1000}
    _binaryType: 'nodebuffer'
    _bufferedAmount: 0
    _closeCode: 1000
    _closeFrameReceived: true
    _closeFrameSent: true
    _closeMessage: ''
    _closeTimer: Timeout {_called: false, _idleTimeout: -1, _idlePrev: null, _idleNext: null, _idleStart: 317581}
    _events: {open: ƒ, message: ƒ, error: ƒ, close: ƒ}
    _eventsCount: 4
    _extensions: {permessage-deflate: PerMessageDeflate}
    _isServer: false
    _maxListeners: undefined
    _protocol: ''
    _readyState: 3
    _receiver: Receiver {_writableState: WritableState, writable: false, _events: {…}, _eventsCount: 0, _maxListeners: undefined}
    _redirects: 0
    _req: null
    _sender: Sender {_extensions: {…}, _socket: TLSSocket, _firstFragment: true, _compress: false, _bufferedBytes: 0}
    _socket: TLSSocket {_tlsOptions: {…}, _secureEstablished: true, _securePending: false, _newSessionPending: false, _controlReleased: true}
    _url: 'wss://omnefeeds.angelbroking.com/NestHtml5Mobile/socket/stream'
    get binaryType: ƒ binaryType() {\n    return this._binaryType;\n  }
    set binaryType: ƒ binaryType(type) {\n    if (!BINARY_TYPES.includes(type)) return;\n\n    this._binaryType = type;\n\n    //\n    // Allow to change `binaryType` on the fly.\n    //\n    if (this._receiver) this._receiver._binaryType = type;\n  }
    get bufferedAmount: ƒ bufferedAmount() {\n    if (!this._socket) return this._bufferedAmount;\n\n    return this._socket._writableState.length + this._sender._bufferedBytes;\n  }
    get extensions: ƒ extensions() {\n    return Object.keys(this._extensions).join();\n  }
    get onclose: ƒ get() {\n      const listeners = this.listeners(method);\n      for (let i = 0; i < listeners.length; i++) {\n        if (listeners[i]._listener) return listeners[i]._listener;\n      }\n\n      return undefined;\n    }
    set onclose: ƒ set(listener) {\n      const listeners = this.listeners(method);\n      for (let i = 0; i < listeners.length; i++) {\n        //\n        // Remove only the listeners added via `addEventListener`.\n        //\n        if (listeners[i]._listener) this.removeListener(method, listeners[i]);\n      }\n      this.addEventListener(method, listener);\n    }
    get onerror: ƒ get() {\n      const listeners = this.listeners(method);\n      for (let i = 0; i < listeners.length; i++) {\n        if (listeners[i]._listener) return listeners[i]._listener;\n      }\n\n      return undefined;\n    }
    set onerror: ƒ set(listener) {\n      const listeners = this.listeners(method);\n      for (let i = 0; i < listeners.length; i++) {\n        //\n        // Remove only the listeners added via `addEventListener`.\n        //\n        if (listeners[i]._listener) this.removeListener(method, listeners[i]);\n      }\n      this.addEventListener(method, listener);\n    }
    get onmessage: ƒ get() {\n      const listeners = this.listeners(method);\n      for (let i = 0; i < listeners.length; i++) {\n        if (listeners[i]._listener) return listeners[i]._listener;\n      }\n\n      return undefined;\n    }
    set onmessage: ƒ set(listener) {\n      const listeners = this.listeners(method);\n      for (let i = 0; i < listeners.length; i++) {\n        //\n        // Remove only the listeners added via `addEventListener`.\n        //\n        if (listeners[i]._listener) this.removeListener(method, listeners[i]);\n      }\n      this.addEventListener(method, listener);\n    }
    get onopen: ƒ get() {\n      const listeners = this.listeners(method);\n      for (let i = 0; i < listeners.length; i++) {\n        if (listeners[i]._listener) return listeners[i]._listener;\n      }\n\n      return undefined;\n    }
    set onopen: ƒ set(listener) {\n      const listeners = this.listeners(method);\n      for (let i = 0; i < listeners.length; i++) {\n        //\n        // Remove only the listeners added via `addEventListener`.\n        //\n        if (listeners[i]._listener) this.removeListener(method, listeners[i]);\n      }\n      this.addEventListener(method, listener);\n    }
    get protocol: ƒ protocol() {\n    return this._protocol;\n  }
    get readyState: ƒ readyState() {\n    return this._readyState;\n  }
    get url: ƒ url() {\n    return this._url;\n  }
    __proto__: EventEmitter
    type: 'close'
    wasClean: true
    __proto__: Event
    

  • @admin I'm still facing the websocket disconnection issue after 10 minutes for Python SDK


  • @admin hi admin now it working fine.


  • @rjbanna Ohh.. that was the reason, no wonder I was not able to save data in list or anything.


  • @dorje Can i get this code please, I have been trying alot, but only getting above three lines and not feed..