Websocket 2.0
-
@vivekjha05 Here's the changes:
def _parse_token_value(binary_packet): token = "" for i in range(len(binary_packet)): if chr(binary_packet[i]) == '\x00': return token token += chr(binary_packet[i]) return token
-
@rajanprabu
not working -
I have updated the code like below to convert the bytes to string and I can see the response.
def _parse_binary_data(self, binary_data): try: parsed_data = { "subscription_mode": self._unpack_data(binary_data, 0, 1, byte_format="B")[0], "exchange_type": self._unpack_data(binary_data, 1, 2, byte_format="B")[0], # "token": SmartWebSocketV2._parse_token_value(binary_data[2:27]), "token": binary_data[2:27].decode("utf-8").replace("\x00",""), "sequence_number": self._unpack_data(binary_data, 27, 35, byte_format="q")[0], "exchange_timestamp": self._unpack_data(binary_data, 35, 43, byte_format="q")[0], "last_traded_price": self._unpack_data(binary_data, 43, 51, byte_format="q")[0] }
Got connected to server...
on open
Ticks: {'subscription_mode': 3, 'exchange_type': 1, 'token': '26009', 'sequence_number': 6346734, 'exchange_timestamp': 1668667371000, 'last_traded_price': 4245320, 'subscription_mode_val': 'SNAP_QUOTE', 'last_traded_quantity': 0, 'average_traded_price': 0, 'volume_trade_for_the_day': 0, 'total_buy_quantity': 0.0, 'total_sell_quantity': 0.0, 'open_price_of_the_day': 0, 'high_price_of_the_day': 0, 'low_price_of_the_day': 0, 'closed_price': 4253530, 'last_traded_timestamp': 0, 'open_interest': 31252900, 'open_interest_change_percentage': 4626580563041346420, 'upper_circuit_limit': 0, 'lower_circuit_limit': 0, '52_week_high_price': 0, '52_week_low_price': 0, 'best_5_buy_data': [{'flag': 0, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 0, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 0, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 0, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 0, 'quantity': 0, 'price': 0, 'no of orders': 0}], 'best_5_sell_data': [{'flag': 1, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 1, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 1, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 1, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 1, 'quantity': 0, 'price': 0, 'no of orders': 0}]}
Ticks: {'subscription_mode': 3, 'exchange_type': 1, 'token': '26009', 'sequence_number': 6347286, 'exchange_timestamp': 1668667372000, 'last_traded_price': 4245150, 'subscription_mode_val': 'SNAP_QUOTE', 'last_traded_quantity': 0, 'average_traded_price': 0, 'volume_trade_for_the_day': 0, 'total_buy_quantity': 0.0, 'total_sell_quantity': 0.0, 'open_price_of_the_day': 0, 'high_price_of_the_day': 0, 'low_price_of_the_day': 0, 'closed_price': 4253530, 'last_traded_timestamp': 0, 'open_interest': 31252900, 'open_interest_change_percentage': 4626580563041346420, 'upper_circuit_limit': 0, 'lower_circuit_limit': 0, '52_week_high_price': 0, '52_week_low_price': 0, 'best_5_buy_data': [{'flag': 0, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 0, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 0, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 0, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 0, 'quantity': 0, 'price': 0, 'no of orders': 0}], 'best_5_sell_data': [{'flag': 1, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 1, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 1, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 1, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 1, 'quantity': 0, 'price': 0, 'no of orders': 0}]} -
Below code will work. Use it for time being.
@staticmethod def _parse_token_value(binary_packet): token = "" token_data = binary_packet.split(b'\x00') for split in token_data: if split: token = split.decode("UTF-8") return token
-
Below code will work use it for time being
@staticmethod def _parse_token_value(binary_packet): token = "" token_data = binary_packet.split(b'\x00') for split in token_data: if split: token = split.decode("UTF-8") return token
-
@Karthikeyan
@rajanprabu
@ashokkmr22Thank you for the fix,
Can you please help me to get time stamp in datetime format.
'exchange_timestamp': 1668667371000.
Also prices (OHLC) into their required formats.Thanks in advance.
-
@vrkhyd commented you on another thread
-
@rajanprabu same here now. any solution??
-
@ashokkmr22 thanks for your convenience
-
import datetime
timestamp = 1671097663
dt_obj = datetime.datetime.fromtimestamp(timestamp)print("date_time:",dt_obj)
print("type of dt:",type(dt_obj)) -
@ashokkmr22 said in Websocket 2.0:
split.decode("UTF-8")
return tokenI tried this and did not worked. Can you please suggest alternate option?
-
@Karthikeyan this is not working
please help