Websocket to obtain Order Status


  • @techs @Ayush-Kumar @SmartAPI_Angel @admin @Ashok

    here is what I have quickly tried

    Try1: using asyncio

    import websockets 
    import asyncio 
    import json
    
    with open('/Users/prabu/Angel_Broking/ab.json') as f:
        data = json.load(f)
    client_code = data['client_code']
    api_key = data['api_key']
    
    with open('/Users/prabu/Angel_Broking/ab_tokens.json') as f:
        data = json.load(f)
    feed_token = str(data['feedToken'])
    access_token = data['jwtToken']
    refreshToken = data['refreshToken']
    
    ws_request = {
         "actiontype" : "subscribe",
         "feedtype" : "order_feed",
         "jwttoken" : access_token,
         "clientcode" : client_code,
         "apikey" : api_key
    }
    
    async def listen(jwttoken, client_id, api_key,ws_request ) :
        
        url = "wss://smartapisocket.angelbroking.com/websocket?jwttoken=" + jwttoken + "&&clientcode=" + client_id + "&&apikey=" + api_key
        async with websockets.connect(url) as ws:
            # await ws.send(ws_request)
            
            msg = await ws.recv()
            print (msg)
    
    asyncio.get_event_loop().run_until_complete(listen(access_token, client_code, api_key, ws_request))
    

    Try 2 : using websocket package

    import websocket 
    import json
    
    
    with open('/Users/prabu/Angel_Broking/ab.json') as f:
        data = json.load(f)
    client_code = data['client_code']
    api_key = data['api_key']
    
    with open('/Users/prabu/Angel_Broking/ab_tokens.json') as f:
        data = json.load(f)
    feed_token = str(data['feedToken'])
    access_token = data['jwtToken']
    refreshToken = data['refreshToken']
    
    ws_request = {
         "actiontype": "heartbeat",
         "feedtype": "order_feed",
         "jwttoken": access_token,
         "clientcode": client_code,
         "apikey": api_key
    }
    
    def on_msg(ws, msg):
        print(msg)
       
    def on_connect(ws, response,request=ws_request):
        print ( response)
        ws.send(request)
        
    def on_close(ws, code, reason):
        ws.stop()
    
    url = "wss://smartapisocket.angelbroking.com/websocket?jwttoken=" + access_token + "&&clientcode=" + client_code + "&&apikey=" + api_key
    # print (url)
    
    ws = websocket.WebSocketApp(url, on_open = on_connect, on_message= on_msg, on_close= on_close)
    ws.run_forever()
    

    But Im not getting any response.. Could you please talk to your team and modify this to be a working example @admin ?

    I know its not perfect and im missing something.. my aim is to provide some base for other users to try out and improve.


  • @admin

    why can't you provide order updates via the data websocket like other API providers do. that will make our life so simple..

    just add one more function like

    on_order(ws, msg)
       print ( msg) 
    

    this would be the easiest for anyone rather than fiddling with establishing another websocket connects and send heart beat every minute.. pretty inefficient..


  • HI @rajanprabu ok we report this to the team and update you.


  • Hi @admin and @SmartAPI_Angel ,
    Sample code should be correct and concise code that your readers can quickly understand and easily reuse with minimal side effects.
    The link you have shared is just a Websocket Order Status API documentation which doesn't have any working example code.

    Please share working python code which uses Websocket Order Status API


  • HI @techs @rajanprabu we have passed the requirement to the team to add the working example we will soon make it available to you.


  • @admin

    Thanks for the prompt response.. This would be of big help.


  • @admin

    Any update on this ? Any example code or ordering updates via data sockets ?


  • Hi @rajanprabu As coordinated with the team the example in doc seems to be explanatory to use it. We can connect with you to discuss on this.


  • @admin Thanks of the update..


  • HI @rajanprabu Let us know when can we connect with you so that we can brief you on the requirement.


  • @admin I fixed it myself. Thanks.


  • @admin Which Package to Install in python for WebSocket, the modulename please

    e.g pip install ..... ?


  • HI @webseos please find it below:
    pip install smartapi-python
    pip install websocket-client


  • @rajanprabu Were you able to solve the issue and get the order update. can you please share the sample code if possible.