Are the netflux extensions required or can they be safely uninstalled?

I’m getting lots of errors in my logs relating to netflux. For example:

[qtp1627428162-21435 - https://example.com/xwiki/websocket/xwiki/netflux] WARN  u.i.x.MyPersistentLoginManager - Login cookie validation hash mismatch! Cookies have been tampered with

Also:

[28/Mar/2025:13:51:22 -0700] "GET /xwiki/websocket/xwiki/netflux HTTP/1.1" 404 43159 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36"

From the description on the Netflux Rest Services page, it doesn’t appear to be required. However, I wanted to check with someone more knowledgeable before I uninstalled it.

If it can’t be uninstalled without breaking something important in XWiki, what do I need to do to fix the errors? I’m running on Ubuntu 22.04 with XWiki 17.1.0 using XJetty installed from the deb packages. Java is OpenJDK Runtime Environment (build 21.0.6+7-Ubuntu-122.04.1)

I can see that it is required by the Realtime UI, for the realtime WYSIWYG editor. If I’m ok with pages being locked when someone is editing them, is there a way to disable it or is it safe to remove the realtime editing components?

It is required by the realtime WYSIWYG editor, as you mentioned below.

If you don’t want to use realtime editing then you can:

  • disable the xwiki-realtime plugin from the CKEditor administration section
  • uninstall the Netflux Server extension (which will uninstall the realtime editing support for the WYSIWYG editor)

If you want to use realtime editing then you need to understand what’s wrong with those HTTP requests. For the second one the status appears to be 404, so it looks like the client side (the browser) can’t access the Netflux WebSocket end-point. You need to check that:

  • your servlet container supports WebSocket connections (there’s a warning / error message logged when XWiki starts if that is the case)
  • the WebSocket requests are not blocked by something, like a reverse proxy, in front of your servlet container. A WebSocket request starts as a standard HTTP request but then gets “upgraded”. Maybe something prevents this “upgrade”.

Hope this helps,
Marius

Sorry it took so long to reply. This is very helpful. Thank you!