Navigation

    SmartAPI Forum
    • Register
    • Login
    • Search
    • Categories
    • Popular
    • Groups
    • FAQs
    • API Docs

    NodeJs websocket is not connecting throwing 401 error

    NodeJS SDK
    1
    1
    5
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • K
      Kavita 0 last edited by

      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;
          }
      
      }
      
      
      1 Reply Last reply Reply Quote 0
      • First post
        Last post