J
@muthukumardab
Try the below code
//Working Code which fetches prices of reliance, sbi, and nifty
const WebSocket = require('ws');
// WebSocket URL
const url = 'ws://smartapisocket.angelone.in/smart-stream';
// Authentication headers
const headers = {
'Authorization': 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJ1c2VybmFtZSI6IlA1Mjk3NzQiLCJyb2xlcyI6MCwidXNlcnR5cGUiOiJVU0VSIiwiaWF0IjoxNjg2NzE2ODYwLCJleHAiOjE2ODY4MDMyNjB9.WmoIdanOGGXox-We42Bre-qSK6yyZQlcci4h3JnLxc8Dt7WgmJZa7IzergbdB2VWPviVg7uKWAi-rOr0H5ijQw',
'x-api-key': 'erZDHFHD',
'x-client-code': 'P529774',
'x-feed-token': 'eyJhbGciOiJIUzUxMiJ9.eyJ1c2VybmFtZSI6IlA1Mjk3NzQiLCJpYXQiOjE2ODY3MTY4NjAsImV4cCI6MTY4NjgwMzI2MH0.fWOQ57fcTGqzuVlktvzFYVe7ztZrt8TFIkrLXvX-Z2HqOtR3cSxsDRW9uv8a9YSCKxt348gAmSondkaHmGaBBA'
};
// Create a WebSocket instance
const socket = new WebSocket(url, { headers });
// Handle WebSocket connection open
socket.on('open', () => {
console.log('WebSocket connected');
// Send a subscription request
const subscriptionRequest = {
//correlationID: '',
action: 1,
params: {
mode: 1,
tokenList: [
{
exchangeType: 1,
tokens: ['26000','2885','3045','99926009','99926011']
/*
NIFTY-50: 26000
RELIANCE-EQ: 2885
SBIN-EQ: 3045
NIFTY BANK:99926009
NIFTY MIDCAP 100:99926011
SENSEX: 99919000
*/
},
/* {
exchangeType: 5,
tokens: ['234230', '234235', '234219']
}*/
]
}
};
socket.send(JSON.stringify(subscriptionRequest));
});
// Handle received messages from the WebSocket
socket.on('message', (message) => {
// Parse the received binary data based on the provided response contract
// Example: Extract the Last Traded Price (LTP) from the received data
const data = new Uint8Array(message);
const ltpBytes = data.slice(43, 47);
const ltpValue = ltpBytes.reduce((value, byte, index) => value + byte * Math.pow(256, index), 0);
const ltp = ltpValue / 100;
console.log('Received LTP:', ltp);
});
// Handle WebSocket connection close
socket.on('close', () => {
console.log('WebSocket connection closed');
});
// Send heartbeat message every 30 seconds to keep the connection alive
setInterval(() => {
if (socket.readyState === WebSocket.OPEN) {
socket.send('ping');
}
}, 30000);
P.S. I also had one question which I am not able to find answer to, how to get the price for SENSEX I am not able to find the correct token for it. Please do tell if you know how to get the ltp for sensex.