Remove QueueOutgoingReliableWarning

Hi to all

I'm using Photon 5 Realtime, having it on my dedicated server.

Often my application recive a "QueueOutgoingReliableWarning" and get disconnected from the server.

This happens even if I'm in udp and i'm sending Non-reliable calls.

I saw on this forum that the cause of this error is that there are too much calls enqueued beetween a Service() call and the another, or they are too big.

Since i have the sourcecode of the server and the client, i'm wondering where the queueOutgoingReliableWarning is situated.

somewhere there must be a line similar to "if queue.count greater than maxCalls then Throw Exception"

Anyone knows where that line is so i can experiment with it?

I know i should reduce the calls and their weight but it wouldn't be enough.

Answers

  • It would be nice if you could detail where you get the warning. Client or server? Which client SDK and version do you use?

    If you send large chunks of data, they get fragmented. Fragments in turn are always reliable, so this could easily cause the issue.

  • Hi, thanks for the reply

    i'm using photon realtime 5 server side and clientside photon3unit3d.dll as assembly

    I recive it client side, while i'm sending audio data and movement data (different packets but sometimes i think they overlap or something).

    if i send only audio data or only movement data i have no issues but if i send both Sometimes on weak networks i recive the warning

    and since it's audio data also if it's not reliable i don't care so much...i can lose some bytes...

    so I wonder if i have a way to turn off the reliability of the fragments.

  • You can't disable fragment reliability, no.

    What kind of audio data do you send? If it's for voip, use Photon Voice 2.

  • what a shame


    I'm sending voip data but it's a difficult project and Photon Voice isn't suited for it sadly

  • Voip data should not be so large it needs fragmentation. What are you sending??

  • we are sending a byte array every fraction of a second (we can tweak that easily).

    from our tests we are sending ~2048 byte of voice data every second.

    I also thought that fragmentation wasn't needed for voip but i have no others idea on why it launches the warning and disconnect.

    As said before it happens only when audio and movement data are sent at the same time.

    also the Service() call is done correctly and regularly so i don't think it's a problem in that direction

  • Do you send the Voip data on the same client? That would explain it.

  • Hi

    No i send data around the network but in the and we handle to resolve it.

    We dumped down a bit of audio quality to keep the size of packets smaller.

    also, even if our service call was called every 20ms we noticed that sometimes some framerate drops make it be called once every 40ms. It shouldn't be too much waiting time theoretically but in practice it was a problem.

    the final solution was to make a thread only for the service call and playing with priorities to be sure that every 15ms the service call is done.

    the effective dispatching of the operations is then sent back in a queue on the unity thread (mandatory for instantiation of prefabs and similar)