Quantcast
Channel: Recent Questions - Solana Stack Exchange
Viewing all articles
Browse latest Browse all 8118

Issue with Solana onLogs and removeLogsListener when splitting code into separate files

$
0
0

I am working on a project using Solana web3.js with the QuickNode API. I have split my code into two files, track.js and remove.js, to keep it organized. However, I am encountering an issue when trying to remove a log listener using removeLogsListener.

ContextIn track.js, I use connection.onLogs(programId) to start listening to logs and save the subscription ID to a JSON file. In remove.js, I retrieve this saved ID and attempt to call connection.removeLogsListener(id).

My Codes:

Track.js

const fs = require('fs');const connection = new Connection(clusterApiUrl('mainnet-beta'));const programId = 'yourProgramId'; const id = connection.onLogs(programId, (log) => {    console.log('Log received:', log);});console.log(`Subscription ID: ${id}`);fs.writeFileSync(`GroupsData/${ctx.chat.id}.json`, JSON.stringify({ subscriptionId: id }), 'utf8');

Remove.js

const fs = require('fs');const connection = new Connection(clusterApiUrl('mainnet-beta'));try {    const data = fs.readFileSync(`GroupsData/${ctx.chat.id}.json`, 'utf8');    const { subscriptionId } = JSON.parse(data);    console.log(`Retrieved Subscription ID: ${subscriptionId}`);    connection.removeLogsListener(subscriptionId);} catch (error) {    console.error('Error removing subscription:', error);}

when i run remove.js i got error:

Ignored unsubscribe request because an active subscription with id `0` for 'logs' events could not be found.

Additional Information:

The subscription ID is correctly saved and retrieved.It appears that onLogs and removeLogsListener need to be called within the same context, which is not feasible with my current setup.

Question:

How can I effectively manage onLogs and removeLogsListener across separate files? Is there a recommended approach to modularize this functionality while ensuring the subscription ID remains valid for removal?

What I've Tried:

Verifying that the subscription ID is correctly saved and retrieved.

Ensuring the file paths and IDs are consistent.

Environment

Solana web3Js version: ["^1.91.4"]

NodeJs version: [22.3.0]

QuickNode API

Any insights or recommendations would be greatly appreciated. Thank you!


Viewing all articles
Browse latest Browse all 8118

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>