[ZEPPELIN-6375] Add auto-reconnect for abnormal WebSocket closures in new UI

### What is this PR for?
This PR adds automatic WebSocket reconnection for non-normal connection closures to the Angular UI (`zeppelin-web-angular`), matching the behavior of the legacy AngularJS UI.

Previously, when the WebSocket connection was closed abnormally (e.g., due to network issues, server timeouts, or browser tab throttling), the Angular UI would not attempt to reconnect, leaving users with a broken connection and requiring a manual page refresh.

This fix monitors WebSocket close events and automatically reconnects when the close code is not 1000 (Normal Closure).

### What type of PR is it?
Bug Fix

### Todos
* [x] - Add reconnection logic for non-normal close codes

### What is the Jira issue?
https://issues.apache.org/jira/browse/ZEPPELIN-6375
- Another related issue: https://issues.apache.org/jira/browse/ZEPPELIN-6374

### How should this be tested?

1. Start Zeppelin server locally
2. Open a notebook in the new UI
3. Test abnormal closure scenarios:
  - e.g., **Tab throttling**: Leave the tab inactive for 2+ minutes (If you could watch the logs for `ZeppelinServer`, then you could check the timeout disconnect right away.).
4. Verify that:
  - WebSocket automatically reconnects after idle timeout.
  - Console shows "WebSocket closed unexpectedly. Reconnecting...".
  - Notebook operations work after reconnection and connection status icon remain green color.

### Questions:
* Does the license files need to update? No
* Is there breaking changes for older versions? No
* Does this needs documentation? No


Closes #5116 from tbonelee/fix-websocket.

Signed-off-by: ChanHo Lee <chanholee@apache.org>
1 file changed
tree: bdd567b4a67e3044a1eabf36636de9788dc22512
  1. .github/
  2. .husky/
  3. .mvn/
  4. alluxio/
  5. angular/
  6. bigquery/
  7. bin/
  8. build-tools/
  9. cassandra/
  10. conf/
  11. dev/
  12. docs/
  13. elasticsearch/
  14. examples/
  15. file/
  16. flink/
  17. flink-cmd/
  18. groovy/
  19. hbase/
  20. helium-dev/
  21. influxdb/
  22. java/
  23. jdbc/
  24. k8s/
  25. licenses/
  26. livy/
  27. markdown/
  28. mongodb/
  29. neo4j/
  30. notebook/
  31. python/
  32. rlang/
  33. scripts/
  34. shell/
  35. spark/
  36. spark-submit/
  37. sparql/
  38. testing/
  39. zeppelin-client/
  40. zeppelin-client-examples/
  41. zeppelin-common/
  42. zeppelin-distribution/
  43. zeppelin-examples/
  44. zeppelin-integration/
  45. zeppelin-interpreter/
  46. zeppelin-interpreter-integration/
  47. zeppelin-interpreter-parent/
  48. zeppelin-interpreter-shaded/
  49. zeppelin-jupyter/
  50. zeppelin-jupyter-interpreter/
  51. zeppelin-jupyter-interpreter-shaded/
  52. zeppelin-plugins/
  53. zeppelin-server/
  54. zeppelin-test/
  55. zeppelin-web/
  56. zeppelin-web-angular/
  57. zeppelin-zengine/
  58. .asf.yaml
  59. .gitattributes
  60. .gitignore
  61. Dockerfile
  62. LICENSE
  63. mvnw
  64. mvnw.cmd
  65. NOTICE
  66. pom.xml
  67. README.md
  68. Roadmap.md
  69. SECURITY-README.md
  70. STYLE.md
README.md

Apache Zeppelin

Documentation: User Guide
Mailing Lists: User and Dev mailing list
Continuous Integration: core frontend rat
Contributing: Contribution Guide
Issue Tracker: Jira
License: Apache 2.0

Zeppelin, a web-based notebook that enables interactive data analytics. You can make beautiful data-driven, interactive and collaborative documents with SQL, Scala and more.

Core features:

  • Web based notebook style editor.
  • Built-in Apache Spark support

To know more about Zeppelin, visit our web site https://zeppelin.apache.org

Getting Started

Install binary package

Please go to install to install Apache Zeppelin from binary package.

Build from source

Please check Build from source to build Zeppelin from source.