adam1 Posted February 7, 2021 Report Posted February 7, 2021 const getAppBranchInfo = (appId, branch) => new Promise(resolve => { let user = new SteamUser(); user.on('loggedOn', async () => { const productInfo = await user.getProductInfo([appId], []); const appName = productInfo.apps[appId].appinfo.common.name; const buildId = productInfo.apps[appId].appinfo.depots.branches[branch].buildid; const timeUpdated = productInfo.apps[appId].appinfo.depots.branches[branch].timeupdated; // Graefully logoff. user.logOff(); resolve({ appName: appName, buildId: buildId, timeUpdated: timeUpdated }); }); user.logOn(); }); const job = schedule.scheduleJob('*/3 * * * * *', () => { console.log(formatDate()); getAppBranchInfo(740, 'public') .then(info => { // [...] }); }); This ran for several hours before: Feb 7 @ 05:37:21 (UTC) /Users/user/git/app/node_modules/steam-user/components/logon.js:23 throw new Error("Already logged on, cannot log on again"); ^ Error: Already logged on, cannot log on again at /Users/user/git/app/node_modules/steam-user/components/logon.js:23:10 The only thing I can think of is that attempting to login anonymously every 3 seconds is too often, but surely it's not possible to already be logged in? Quote
Dr. McKay Posted February 9, 2021 Report Posted February 9, 2021 Can I see the rest of the stack trace, please? It's possible that there's a bug in the module. This isn't related to the error, but I don't see any reason why you'd need to log on anonymously every time you want to send that request. You could just leave the connection open and you might run into fewer issues with Steam throttling you or something. Quote
adam1 Posted February 10, 2021 Author Report Posted February 10, 2021 On 2/9/2021 at 7:37 AM, Dr. McKay said: Can I see the rest of the stack trace, please? It's possible that there's a bug in the module. This isn't related to the error, but I don't see any reason why you'd need to log on anonymously every time you want to send that request. You could just leave the connection open and you might run into fewer issues with Steam throttling you or something. Hey, sure. If I change my job to run every second I can get it to happen within a minute or so usually: Feb 10 @ 08:07:17 (UTC) /Users/user/git/app/node_modules/steam-user/components/logon.js:23 throw new Error("Already logged on, cannot log on again"); ^ Error: Already logged on, cannot log on again at /Users/user/git/app/node_modules/steam-user/components/logon.js:23:10 at processTicksAndRejections (node:internal/process/task_queues:75:11) Quote
Dr. McKay Posted February 11, 2021 Report Posted February 11, 2021 const SteamUser = require('./index.js'); let instance = 0; const getAppBranchInfo = (appId, branch) => new Promise(resolve => { let user = new SteamUser(); let inst = ++instance; user.on('loggedOn', async () => { console.log(inst + ' logged on'); const productInfo = await user.getProductInfo([appId], []); const appName = productInfo.apps[appId].appinfo.common.name; const buildId = productInfo.apps[appId].appinfo.depots.branches[branch].buildid; const timeUpdated = productInfo.apps[appId].appinfo.depots.branches[branch].timeupdated; console.log(inst + ' ' + buildId); // Graefully logoff. user.logOff(); resolve({ appName: appName, buildId: buildId, timeUpdated: timeUpdated }); }); user.logOn(); }); setInterval(() => getAppBranchInfo(740, 'public'), 1000); I ran this for 5 minutes and it didn't crash. What version of steam-user are you on? Quote
adam1 Posted February 11, 2021 Author Report Posted February 11, 2021 (edited) 10 hours ago, Dr. McKay said: I ran this for 5 minutes and it didn't crash. What version of steam-user are you on? Hi, thanks for trying it out. I'm running `4.19.3` at the moment. Although when I tried this again today I had to leave it running for quite some time to generate an error... 6 hours roughly. I did get a slightly longer stack trace this time. I'm usually running it in a screen so I worry that might be chopping the stack trace off. /Users/user/git/app/node_modules/steam-user/components/logon.js:23 throw new Error("Already logged on, cannot log on again"); ^ Error: Already logged on, cannot log on again at /Users/user/git/app/node_modules/steam-user/components/logon.js:23:10 at processTicksAndRejections (node:internal/process/task_queues:75:11) at runNextTicks (node:internal/process/task_queues:62:3) at listOnTimeout (node:internal/timers:525:9) at processTimers (node:internal/timers:499:7) Edited February 11, 2021 by adam1 Quote
adam1 Posted February 19, 2021 Author Report Posted February 19, 2021 (edited) @Dr. McKay I realised I can't use try/catch with the logOn method to handle this error due to lack of callback/promise. Is this something that could be changed? Also, using `user.on('error', [..]` doesn't seem to catch this. Edited February 19, 2021 by adam1 Quote
Dr. McKay Posted February 26, 2021 Report Posted February 26, 2021 Yeah... I really am not sure about the best way to approach this. It's necessary to use process.nextTick in order to avoid errors caused by calling logOn inside of an error callback, meaning that the thrown Error can't be caught. But I also don't like the idea of using the error event for this, since when this error occurs, the client actually still is logged on and the error event always indicates that the client has disconnected... Quote
adam1 Posted February 26, 2021 Author Report Posted February 26, 2021 3 hours ago, Dr. McKay said: Yeah... I really am not sure about the best way to approach this. It's necessary to use process.nextTick in order to avoid errors caused by calling logOn inside of an error callback, meaning that the thrown Error can't be caught. But I also don't like the idea of using the error event for this, since when this error occurs, the client actually still is logged on and the error event always indicates that the client has disconnected... I'll keep an eye on this thread, hope you can come up with a solution. Right now I've implemented a pretty nasty workaround. process.on('uncaughtException', error => { if (error.message === 'Already logged on, cannot log on again') { console.error(error.message); return; } throw error; }); Quote
Dr. McKay Posted February 26, 2021 Report Posted February 26, 2021 A more proper way would be to check if client.steamID is set before calling logOn and aborting if it is. Quote
johnsnow Posted September 26, 2022 Report Posted September 26, 2022 On 2/26/2021 at 5:53 AM, adam1 said: I'll keep an eye on this thread, hope you can come up with a solution. Right now I've implemented a pretty nasty workaround. Hello, can someone help me i get same error after 100 seconds of running /app/node_modules/steam-user/components/logon.js:10 Thank you Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.