From 4800f8fb706a092a38255ee70904227238b2a6f6 Mon Sep 17 00:00:00 2001 From: lolka1333 Date: Mon, 5 Jan 2026 05:50:40 +0100 Subject: feat: Real-time Outbound Traffic, UI Improvements & Fix (#3629) * Refactor HTML and JavaScript for improved UI and functionality - Cleaned up JavaScript methods in subscription.js for better readability. - Updated inbounds.html to clarify traffic update handling and removed unnecessary comments. - Enhanced xray.html by correcting casing in routingDomainStrategies. - Added mobile touch scrolling styles in page.html for better tab navigation on small screens. - Streamlined vless.html by removing redundant line breaks and improving form layout. - Refined subscription subpage.html for better structure and user experience. - Adjusted outbounds.html to improve button visibility and functionality. - Updated xray_traffic_job.go to ensure accurate traffic updates and real-time UI refresh. * Refactor client traffic handling in InboundService - Updated addClientTraffic method to initialize onlineClients as an empty slice instead of nil. - Improved clarity and consistency in handling empty onlineUsers scenario. * Add WebSocket support for outbounds traffic updates - Implemented WebSocket connection in xray.html to handle real-time updates for outbounds traffic. - Enhanced xray_traffic_job.go to retrieve and broadcast outbounds traffic updates. - Introduced MessageTypeOutbounds in hub.go for managing outbounds messages. - Added BroadcastOutbounds function in notifier.go to facilitate broadcasting outbounds updates to connected clients. --------- Co-authored-by: lolka1333 --- web/html/xray.html | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'web/html/xray.html') diff --git a/web/html/xray.html b/web/html/xray.html index ce5e1ab7..186156ff 100644 --- a/web/html/xray.html +++ b/web/html/xray.html @@ -269,7 +269,7 @@ tag: "direct", protocol: "freedom" }, - routingDomainStrategies: ["AsIs", "IpIfNonMatch", "IpOnDemand"], + routingDomainStrategies: ["AsIs", "IPIfNonMatch", "IPOnDemand"], log: { loglevel: ["none", "debug", "info", "warning", "error"], access: ["none", "./access.log"], @@ -968,6 +968,17 @@ await this.getXraySetting(); await this.getXrayResult(); await this.getOutboundsTraffic(); + + if (window.wsClient) { + window.wsClient.connect(); + window.wsClient.on('outbounds', (payload) => { + if (payload) { + this.outboundsTraffic = payload; + this.$forceUpdate(); + } + }); + } + while (true) { await PromiseUtil.sleep(800); this.saveBtnDisable = this.oldXraySetting === this.xraySetting; -- cgit v1.2.3