NodeJs websocket is not connecting throwing 401 error
-
Hello Team,
I'm trying to connect websocket via node sdk I tried both the old and new ways defined in this file,https://github.com/angel-one/smartapi-javascript
Error message Im getting, D:\user\node\jupiter-trader\node_modules\smartapi-javascript\lib\websocket2.0.js:89 throw new Error(evt.message); ^ Error: Unexpected server response: 401 at ws.onerror (D:\user\node\jupiter-trader\node_modules\smartapi-javascript\lib\websocket2.0.js:89:15) at callListener (D:\user\node\jupiter-trader\node_modules\ws\lib\event-target.js:290:14) at WebSocket.onError (D:\user\node\jupiter-trader\node_modules\ws\lib\event-target.js:230:9) at WebSocket.emit (node:events:518:28) at emitErrorAndClose (D:\user\node\jupiter-trader\node_modules\ws\lib\websocket.js:1046:13) at process.processTicksAndRejections (node:internal/process/task_queues:90:21)Below is the sample code I'm trying to do,
async function connectWebSocket() { try { const web_socket = new WebSocketV2({ jwttoken: smart_api.access_token, // response from loginAPI apikey: smart_api.api_key, // response from loginAPI clientcode: 'K518180', // my client codo feedtype: 'market_feed', }); console.log('🔄 Connecting with WebSocketV2...'); // Set up event handlers BEFORE connecting web_socket.on('open', () => { console.log('✅ WebSocketV2 connected successfully'); }); web_socket.on('tick', (data) => { console.log('📈 Market data received:', data); // Process market data for your trading logic // data will contain ltp, volume, etc. }); web_socket.on('error', (err) => { console.error('❌ WebSocketV2 error:', err.message); if (err.message.includes('401')) { console.error('⚠️ Authentication failed! JWT token may be invalid or expired.'); console.error('Get a fresh JWT token from generateSession()'); } }); web_socket.on('close', () => { console.log('🔌 WebSocketV2 connection closed'); // Attempt reconnect after delay setTimeout(() => { console.log('Attempting to reconnect...'); connectWebSocket(); }, 5000); }); // Connect console.log('🔄 Establishing WebSocketV2 connection...'); await web_socket.connect(); console.log('✅ WebSocketV2 connection established'); // Use the format from documentation const json_req = { correlationID: 'order_monitor_' + Date.now(), action: 1, // 1 = subscribe, 0 = unsubscribe mode: 1, exchangeType: 1, tokens: ["market_feed"], // For order feed }; web_socket.fetchData(json_req); web_socket.on('tick', (data) => { console.log('📦 Order update:', data); }); web_socket.on('error', (err) => { console.error('WebSocketV2 error:', err); }); return web_socket; } catch (error) { console.error('WebSocketV2 connection failed:', error); return; } }