Re: [jetty-users] WebSocketListener.onWebSocketClose called numerous times
On the browser side I had automatic reconnects implemented, whenever the Websockets connection was closed. But now I am trying to detect, that a player is already connected in another browser tab and then send a custom close status 4000 from Jetty (so that automatic reconnect is disabled there and a dialog is displayed to the user, offering to reconnect): // called by the onWebSocketText Jetty-callback private void handleLogin(String username, String password) throws Exception { // check username + password and then send the player her/his open games mSession.getRemote().sendStringByFuture(mServlet.getGames(mUid)); // if oldSession is not null and still open, // then the player has several browser tabs open or // uses the mobile and the desktop app at the same time Session oldSession = SESSIONS.put(mUid, mSession); try { oldSession.close(4000, "another game session detected"); oldSession.disconnect(); } catch (Exception ex) { // ignore } However this only works sporadically, I rarely see the code 4000 in the browser. Is this caused by the half open connections too? Thank you Alex ___ jetty-users mailing list jetty-users@eclipse.org To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jetty-users
Re: [jetty-users] WebSocketListener.onWebSocketClose called numerous times
Hi Joakim, I have changed my custom 9.4.37.v20210219 WebSocketServlet to @Override public void configure(WebSocketServletFactory factory) { factory.getPolicy().setIdleTimeout(5 * 60 * 1000); factory.getPolicy().setMaxBinaryMessageSize(0); factory.getPolicy().setMaxTextMessageSize(64 * 1024); factory.register(MyListener.class); factory.setCreator(new MyCreator(this))); } and have started implementing calling sendPing() every 4 minutes for the connected clients, but then I have read your other message at https://stackoverflow.com/a/54654700/165071 "Setting Max Idle Timeout and then causing the connection to not be idle by sending ping/pong isn't ideal." Do you mean by that, that if my custom WebSocketServlet will send PING every 4 minutes to the browser clients, then the connection will never be idle? Or what do you mean by "isn't ideal"? What else could be done here? Thank you Alex ___ jetty-users mailing list jetty-users@eclipse.org To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jetty-users
Re: [jetty-users] WebSocketListener.onWebSocketClose called numerous times
Thank you, Joakim! ___ jetty-users mailing list jetty-users@eclipse.org To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jetty-users
Re: [jetty-users] WebSocketListener.onWebSocketClose called numerous times
I see you have a 1 hour idle timeout at the server side. That's nice and all, but if you have clients connecting over mobile networks you'll have to contend with intermediaries with their own TCP idle timeouts. (quite common) I've seen mobile networks close idle TCP connections due to idle timeout. I've seen SIM cards with configurations to close idle TCP connections that last too long. I've seen specific mobile towers close idle TCP connections that last too long. I've seen overloaded mobile networks close idle TCP connections. If the mobile network idle times out, and you don't send any traffic on that connection from the server side, you won't know about it until the server idle timeout triggers. You'll want to make sure your program is aware of client reconnects and whatnot, usually you see that as a result of a mobile device. It can even happen with a mobile device moves from network to network. I would recommend not relying on the 1 hour idle timeout to cleanup your dead connections. Instead, use the websocket protocol's ping/pong after a period of time to ensure the other side is still there. I would use ping/pong frequency faster than 5 minutes. (no more than 5 minutes between ping send). Why 5 minutes? Well, that's the most common mobile network TCP idle timeout I've personally encountered (its even a common idle timeout seen on the cloud providers own load balancers: google, aws, azure, etc. which on some providers you cannot increase, only decrease). Joakim Erdfelt / joa...@webtide.com On Fri, Feb 26, 2021 at 10:51 AM Alexander Farber < alexander.far...@gmail.com> wrote: > Thank you for your suggestion, Joakim, I didn't think about it. > > So I have added the remote port to the log (and also upgraded to Jetty > 9.4.37.v20210219) > > and yes - the ports are different (please see the log below)... but how > can a single user have so many connections (over a dozen) open to my game > which requires a single connection only? > > What is the explanation? Some buggy browser (my players are from Russia) > or too many tabs? > > qtp100555887-17: onWebSocketClose: hostname=77.111.247.123 port=13533 > mUid=18555 statusCode=1006 reason=Disconnected > qtp100555887-34: onWebSocketClose: hostname=77.111.247.123 port=55271 > mUid=18555 statusCode=1006 reason=Disconnected > qtp100555887-71: onWebSocketClose: hostname=77.111.247.123 port=33979 > mUid=18555 statusCode=1006 reason=Disconnected > qtp100555887-17: onWebSocketClose: hostname=77.111.247.123 port=58969 > mUid=0 statusCode=1006 reason=Disconnected > qtp100555887-54: onWebSocketClose: hostname=77.111.247.123 port=56049 > mUid=18555 statusCode=1006 reason=Disconnected > qtp100555887-34: onWebSocketClose: hostname=77.111.247.123 port=37309 > mUid=0 statusCode=1006 reason=Disconnected > qtp100555887-54: onWebSocketClose: hostname=77.111.247.123 port=52163 > mUid=18555 statusCode=1006 reason=Disconnected > qtp100555887-17: onWebSocketClose: hostname=77.111.247.123 port=59447 > mUid=0 statusCode=1006 reason=Disconnected > qtp100555887-66: onWebSocketClose: hostname=77.111.247.123 port=40691 > mUid=0 statusCode=1006 reason=Disconnected > qtp100555887-71: onWebSocketClose: hostname=77.111.247.123 port=42557 > mUid=18555 statusCode=1006 reason=Disconnected > qtp100555887-71: onWebSocketClose: hostname=77.111.247.123 port=57649 > mUid=18555 statusCode=1006 reason=Disconnected > qtp100555887-71: onWebSocketClose: hostname=77.111.247.123 port=15239 > mUid=18555 statusCode=1006 reason=Disconnected > > Thank you > Alex > ___ > jetty-users mailing list > jetty-users@eclipse.org > To unsubscribe from this list, visit > https://www.eclipse.org/mailman/listinfo/jetty-users > ___ jetty-users mailing list jetty-users@eclipse.org To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jetty-users
Re: [jetty-users] WebSocketListener.onWebSocketClose called numerous times
Thank you for your suggestion, Joakim, I didn't think about it. So I have added the remote port to the log (and also upgraded to Jetty 9.4.37.v20210219) and yes - the ports are different (please see the log below)... but how can a single user have so many connections (over a dozen) open to my game which requires a single connection only? What is the explanation? Some buggy browser (my players are from Russia) or too many tabs? qtp100555887-17: onWebSocketClose: hostname=77.111.247.123 port=13533 mUid=18555 statusCode=1006 reason=Disconnected qtp100555887-34: onWebSocketClose: hostname=77.111.247.123 port=55271 mUid=18555 statusCode=1006 reason=Disconnected qtp100555887-71: onWebSocketClose: hostname=77.111.247.123 port=33979 mUid=18555 statusCode=1006 reason=Disconnected qtp100555887-17: onWebSocketClose: hostname=77.111.247.123 port=58969 mUid=0 statusCode=1006 reason=Disconnected qtp100555887-54: onWebSocketClose: hostname=77.111.247.123 port=56049 mUid=18555 statusCode=1006 reason=Disconnected qtp100555887-34: onWebSocketClose: hostname=77.111.247.123 port=37309 mUid=0 statusCode=1006 reason=Disconnected qtp100555887-54: onWebSocketClose: hostname=77.111.247.123 port=52163 mUid=18555 statusCode=1006 reason=Disconnected qtp100555887-17: onWebSocketClose: hostname=77.111.247.123 port=59447 mUid=0 statusCode=1006 reason=Disconnected qtp100555887-66: onWebSocketClose: hostname=77.111.247.123 port=40691 mUid=0 statusCode=1006 reason=Disconnected qtp100555887-71: onWebSocketClose: hostname=77.111.247.123 port=42557 mUid=18555 statusCode=1006 reason=Disconnected qtp100555887-71: onWebSocketClose: hostname=77.111.247.123 port=57649 mUid=18555 statusCode=1006 reason=Disconnected qtp100555887-71: onWebSocketClose: hostname=77.111.247.123 port=15239 mUid=18555 statusCode=1006 reason=Disconnected Thank you Alex ___ jetty-users mailing list jetty-users@eclipse.org To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jetty-users
Re: [jetty-users] WebSocketListener.onWebSocketClose called numerous times
It's likely multiple connections from the same user / remote address. Include the mSession.getRemoteAddress().getPort() in your output to confirm. If it reports different ports, then that's definitely multiple connections being closed. You can also create a unique "id" for every connection/session in your onWebSocketConnect() and report that in your LOG info line. Joakim Erdfelt / joa...@webtide.com On Fri, Feb 26, 2021 at 7:45 AM Alexander Farber wrote: > Hello, > > I am using Jetty 9.4.35.v20201120 for a Websockets word game with 2000 > users and while it works pretty stable, every minute or so I observe the > following bursts in the log: > > INFO:words:qtp100555887-757: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-756: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-757: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-929: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-757: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-938: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-937: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-938: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-929: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-953: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-756: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-929: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-756: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-757: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-938: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-953: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-938: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-937: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-757: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-953: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-929: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-938: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-756: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-937: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-938: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-756: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-757: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-938: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-937: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-929: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-951: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1001 reason= > INFO:words:qtp100555887-757: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1006 reason=Disconnected > INFO:words:qtp100555887-951: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1006 reason=Disconnected > INFO:words:qtp100555887-938: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1006 reason=Disconnected > INFO:words:qtp100555887-951: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1006 reason=Disconnected > INFO:words:qtp100555887-937: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1006 reason=Disconnected > INFO:words:qtp100555887-938: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1006 reason=Disconnected > INFO:words:qtp100555887-951: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1006 reason=Disconnected > INFO:words:qtp100555887-953: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1006 reason=Disconnected > INFO:words:qtp100555887-756: onWebSocketClose: hostname=77.111.244.123 > mUid=0 statusCode=1006
[jetty-users] WebSocketListener.onWebSocketClose called numerous times
Hello, I am using Jetty 9.4.35.v20201120 for a Websockets word game with 2000 users and while it works pretty stable, every minute or so I observe the following bursts in the log: INFO:words:qtp100555887-757: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-756: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-757: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-929: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-757: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-938: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-937: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-938: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-929: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-953: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-756: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-929: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-756: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-757: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-938: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-953: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-938: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-937: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-757: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-953: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-929: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-938: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-756: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-937: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-938: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-756: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-757: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-938: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-937: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-929: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-951: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1001 reason= INFO:words:qtp100555887-757: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1006 reason=Disconnected INFO:words:qtp100555887-951: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1006 reason=Disconnected INFO:words:qtp100555887-938: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1006 reason=Disconnected INFO:words:qtp100555887-951: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1006 reason=Disconnected INFO:words:qtp100555887-937: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1006 reason=Disconnected INFO:words:qtp100555887-938: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1006 reason=Disconnected INFO:words:qtp100555887-951: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1006 reason=Disconnected INFO:words:qtp100555887-953: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1006 reason=Disconnected INFO:words:qtp100555887-756: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1006 reason=Disconnected INFO:words:qtp100555887-757: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1006 reason=Disconnected INFO:words:qtp100555887-929: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1006 reason=Disconnected INFO:words:qtp100555887-756: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1006 reason=Disconnected INFO:words:qtp100555887-951: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1006 reason=Disconnected INFO:words:qtp100555887-938: onWebSocketClose: hostname=77.111.244.123 mUid=0 statusCode=1006 reason=Disconnected INFO:words:qtp100555887-951: onWebSocketClose: