Is a "Internet not connected" momentary flash error expected with pub-sub?

I have a small pub sub app. When updates are made, a red “internet connection” error flashes briefly. Is this expected behavior? If not , any suggestions to “fix” it?


Thank you.

I would check your server logs, are you sure that your page isn’t crashing and then that’s triggering a refresh? The error you see is not expected.

This should be solved according to this issue "We can't find the internet" flashes on Page transitions and reloads on Firefox 106.0.5 on Phoenix 1.7-rx.0 · Issue #5102 · phoenixframework/phoenix · GitHub

Make sure you are on the latest version of Phoenix and LiveView. However, I can still see it in Firefox.
I solved it temporary with adding this as a conditional class to the flash component in core components:

@id == "disconnected" && "transition delay-300"

Basically means that it waits 300ms before dislaying it and then it is usually connected and doesnt show up at all.

I don’t think that’s the root cause here though. In @wktdev’s video, the other subscribed tab was reloading when the form submitted. He didn’t provide any code, but I’m guessing he is using pubsub and the other page is subscribed to a message that the form submit triggers. If the other page is reloading when it receives a pubsub message that’s probably because it’s crashing.

You might be correct.

I don’t see any red highlighted errors in the console. The code I used to create Alerts is identical to the code I used to create “testbeds”. When I create “testbeds” I do not get the internet time out message. I’ll post some code in a minute

I wrote this for “pub-sub” testbeds.

  def handle_info({TestBeds, [:testbed | _], _}, socket) do
    {:noreply, assign(socket, testbeds: TestBeds.list_testbeds())}

I replicated it for alerts:

  def handle_info({Alerts, [:alert | _], _}, socket) do
    {:noreply, assign(socket, alerts: Alerts.list_alerts())}

I accidentally set the code like this:

  def handle_info({Alerts, [:alert | _], _}, socket) do
    {:noreply, assign(socket, alerts: Alerts.list_testbeds())}    # error should be Alert.list_alerts

In the post above I wrote that the code is identical between the testbed and alerts. It forced me to fine-tooth that statement. They weren’t identical. The console had a non-red highlighted error but it was tangled in the rest of the output and I missed it.