-
-
Notifications
You must be signed in to change notification settings - Fork 30
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
Reverse Websocket Proxy malfunction #446
Comments
In general, the proxy works as needed. But very often, websocket connection between the user clients and the JVB become stuck (but not closed at browsers side). By investigation, this is because proxied backend connections are dropped. On our production, I constantly observe much less backend connections than the number of current meeting participants. And this seems to caused by a general code design problem with threading, because "wrong" connections are dropped in moment that others are closed down. In addition, this failure don't lead to a closedown of the frondend websocket connection: Messages from the user clients are still accepted and this side don't get aware of the problem. If this external connection would die in the same moment at least, the client will probably detect and recover the communication. The typical related exception seems to be
Maybe the code isn't thread-save, have other race conditions or don't use library calls in the right way or with wrong/missing parameters. |
I totally agree with you. It does not help that we are using an old end-of-life version of Jetty websockets in Openfire. I really want to move Jetty to latest code because of HTTP3 as soon as possible. |
The reverse websocket proxy running on the OpenFire server, that intermediates between the participant browsers Jitsi Webmeeting instances and the Jitsi Video Bridge, tend to drop backend connections in use. In addition, the corresponding frontend connection isn't terminated. For this reason, the Webmeeting client don't get aware of this and will not use it's recover mechanisms. In the case of a broken backend connection, the client will send into the void and don't receive messages anymore.
The affected communication channel is used between all the participant clients and the bridge to interchange information about available bandwith and used video resolution. Without this, the client will drop down to lowest video quality or stop the video transmissions at all.
The text was updated successfully, but these errors were encountered: