Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Max call stack size exceeded on Connection.close #54

Open
NishantDesai1306 opened this issue Aug 27, 2018 · 3 comments
Open

Max call stack size exceeded on Connection.close #54

NishantDesai1306 opened this issue Aug 27, 2018 · 3 comments
Labels

Comments

@NishantDesai1306
Copy link

I have a periodic service in nodejs that tries to create 30-40 socket connections and close it in case (it gets connected successfully or some error occurs while connecting) but every now an then I get Maxmimum call stack size exceeded error at line connection.close()

My Code structure

const connection = ws.connect(socketServerUrl, (err) => {
    if (err) {
        // console.log the error
    }
    else {
        connection.sendPing();
    }
});

connection.on('error', (err) => {
    const reason = err && err.message ? err.message : err;

    // THIS IS WHERE I GET THAT MAX CALL STACK SIZE REACHED EXCEPTION
    connection.close(); // release the connection
});

connection.on('pong', (data) => {
    connection.close(); // release the connection
});

Error Screenshot
image

@NishantDesai1306
Copy link
Author

I am also open to other better ways to do this, basically what I need to do is check every few minutes whether socket servers are accepting connection or not.

@taomas
Copy link

taomas commented Sep 18, 2018

i have the same problem when close browser or refresh browser

@sitegui
Copy link
Owner

sitegui commented Nov 28, 2018

Hi, the problem here seems to be a loop error -> close -> error -> ...

The error event will naturally also close the socket (https://github.com/sitegui/nodejs-websocket#event-errorerrobj), normally you don't have to explicit call it.

However, the lib shouldn't crash when someone does it :)
This happens because a call to close() (by WebSocket spec) does not close the socket right away. First it tries to inform the peer the connection will be dropped by a given reason. The underlying call to write errors and cycle error -> close -> write -> error -> ... begins

I don't have the time to fix this issue for now, however I'm open for a PR if you want to dive into the code.

Best regards,

@sitegui sitegui added the bug label Nov 28, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants