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/websocket/hub.go | 1 + web/websocket/notifier.go | 8 ++++++++ 2 files changed, 9 insertions(+) (limited to 'web/websocket') diff --git a/web/websocket/hub.go b/web/websocket/hub.go index 187ebb6f..7ee93405 100644 --- a/web/websocket/hub.go +++ b/web/websocket/hub.go @@ -20,6 +20,7 @@ const ( MessageTypeInbounds MessageType = "inbounds" // Inbounds list update MessageTypeNotification MessageType = "notification" // System notification MessageTypeXrayState MessageType = "xray_state" // Xray state change + MessageTypeOutbounds MessageType = "outbounds" // Outbounds list update ) // Message represents a WebSocket message diff --git a/web/websocket/notifier.go b/web/websocket/notifier.go index cedf56f2..416adaff 100644 --- a/web/websocket/notifier.go +++ b/web/websocket/notifier.go @@ -48,6 +48,14 @@ func BroadcastInbounds(inbounds interface{}) { } } +// BroadcastOutbounds broadcasts outbounds list update to all connected clients +func BroadcastOutbounds(outbounds interface{}) { + hub := GetHub() + if hub != nil { + hub.Broadcast(MessageTypeOutbounds, outbounds) + } +} + // BroadcastNotification broadcasts a system notification to all connected clients func BroadcastNotification(title, message, level string) { hub := GetHub() -- cgit v1.2.3