Coder Social home page Coder Social logo

Comments (5)

robtaussig avatar robtaussig commented on August 21, 2024

Ahh, great point! I will implement for next release, or happy to accept a pull request if you need it sooner.

from react-use-websocket.

robtaussig avatar robtaussig commented on August 21, 2024

Had a moment to check in on this, and my reading of it is that this should already be the behavior. The reconnect function calls the same function used to get the url in the start phase, which means that it should refetch the url in the retryInterval:

const start = async () => {
  convertedUrl.current = await getUrl(url, optionsCache); //Fetches/refetches url here

  const protectedSetLastMessage = (message: WebSocketEventMap['message']) => {
    if (!expectClose) {
      setLastMessage(message);
    }
  };

  const protectedSetReadyState = (state: ReadyState) => {
    if (!expectClose) {
      setReadyState(prev => ({
        ...prev,
        ...(convertedUrl.current && {[convertedUrl.current]: state}),
      }));
    }
  };

  removeListeners = createOrJoinSocket(
    webSocketRef,
    convertedUrl.current,
    protectedSetReadyState,
    optionsCache,
    protectedSetLastMessage,
    startRef, // Function called for reconnect
    reconnectCount,
  );
};

//Reconnect by removingPrevious listeners and then calls start function
startRef.current = () => {
  if (!expectClose) {
    if (webSocketProxy.current) webSocketProxy.current = null;
    removeListeners?.();
    start();
  }
};

start();

Are you seeing different behavior? If so, do you have any thoughts on how to change above logic?

from react-use-websocket.

jaecktec avatar jaecktec commented on August 21, 2024

maybe we should add some tests 🙈
I noticed this behaviour when having a service that was restarting after a change.
From the code I think there should be a try/catch around the getUrl part.. however I have not checked the internas of this library to see what happens.

from react-use-websocket.

robtaussig avatar robtaussig commented on August 21, 2024

Tests are never a bad idea. Will close for now and start working on some tests when time frees up. Feel free to re-open if the problem persists.

from react-use-websocket.

stanleyk avatar stanleyk commented on August 21, 2024

The problem actually persists. Any time the getUrl async call throws, no reconnect attempts are made. The throw bubbles up and that's it.

from react-use-websocket.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.