diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandler.java
index 1c16a44..4fd7cce 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandler.java
@@ -172,7 +172,7 @@
 
     private static final String SLASH = "/";
 
-    private static final long TRAFFIC_PERIOD = 5000;
+    private static final long TRAFFIC_PERIOD = 3000;
     private static final long SUMMARY_PERIOD = 30000;
 
     private static final Comparator<? super ControllerNode> NODE_COMPARATOR =
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocket.java b/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocket.java
index e53a007..61f8015 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocket.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocket.java
@@ -251,17 +251,18 @@
             ObjectNode message = (ObjectNode) mapper.reader().readTree(data);
             String type = message.path(EVENT).asText(UNKNOWN);
 
-            if (sessionToken == null) {
-                authenticate(type, message);
+//            if (sessionToken == null) {
+//                authenticate(type, message);
+//
+//            } else {
+            UiMessageHandler handler = handlers.get(type);
+            if (handler != null) {
+                log.debug("RX message: {}", message);
+                handler.process(message);
             } else {
-                UiMessageHandler handler = handlers.get(type);
-                if (handler != null) {
-                    log.debug("RX message: {}", message);
-                    handler.process(message);
-                } else {
-                    log.warn("No GUI message handler for type {}", type);
-                }
+                log.warn("No GUI message handler for type {}", type);
             }
+//            }
 
         } catch (Exception e) {
             log.warn("Unable to parse GUI message {} due to {}", data, e);
@@ -349,7 +350,6 @@
     private void authenticate(String type, ObjectNode message) {
         if (!AUTHENTICATION.equals(type)) {
             log.warn("WebSocket not authenticated: {}", message);
-            sendMessage(ERROR, notAuthorized(null));
             close();
             return;
         }
@@ -370,7 +370,7 @@
     private ObjectNode notAuthorized(UiSessionToken token) {
         return objectNode()
                 .put("message", "invalid authentication token")
-                .put("badToken", token != null ? token.toString() : "null");
+                .put("badToken", token.toString());
     }
 
     private void registerOverlays(UiExtension ext) {
