WebSockets - Hataları Yönetme

İstemci ve sunucu arasında bir bağlantı kurulduktan sonra, openolay, Web Soketi örneğinden tetiklenir. İletişim sırasında meydana gelen hatalar için hata üretilir. Yardımı ile işaretlenmiştironerror Etkinlik. Onerror her zaman bağlantının sona ermesi gelir.

onerrorolay, iletişimler arasında yanlış bir şey olduğunda tetiklenir. Olayonerror ardından bir bağlantı sonlandırması gelir; close Etkinlik.

Kullanıcıyı her zaman beklenmedik hata konusunda bilgilendirmek ve bunları yeniden bağlamayı denemek iyi bir uygulamadır.

socket.onclose = function(event) {
   console.log("Error occurred.");
	
   // Inform the user about the error.
   var label = document.getElementById("status-label");
   label.innerHTML = "Error: " + event;
}

Hata işleme söz konusu olduğunda, hem dahili hem de harici parametreleri dikkate almanız gerekir.

  • Dahili parametreler, kodunuzdaki hatalar veya beklenmeyen kullanıcı davranışı nedeniyle oluşabilecek hataları içerir.

  • Dış hataların uygulamayla hiçbir ilgisi yoktur; daha ziyade, kontrol edilemeyen parametrelerle ilgilidirler. En önemlisi ağ bağlantısıdır.

  • Herhangi bir etkileşimli çift yönlü web uygulaması, aktif bir İnternet bağlantısı gerektirir.

Ağ Kullanılabilirliğini Kontrol Etme

Görevlerinin ortasında aniden ağ bağlantısı yanıt vermemeye başladığında, kullanıcılarınızın web uygulamanızdan keyif aldığını hayal edin. Modern yerel masaüstü ve mobil uygulamalarda, ağ kullanılabilirliğini kontrol etmek yaygın bir görevdir.

Bunu yapmanın en yaygın yolu, yayında olması gereken bir web sitesine (örneğin, http://www.google.com) HTTP isteğinde bulunmaktır. İstek başarılı olursa, masaüstü veya mobil cihaz aktif bağlantı olduğunu bilir. Benzer şekilde, HTML'deXMLHttpRequest ağ kullanılabilirliğini belirlemek için.

Ancak HTML5, işi daha da kolaylaştırdı ve tarayıcının web yanıtlarını kabul edip edemeyeceğini kontrol etmenin bir yolunu sundu. Bu, gezgin nesnesi aracılığıyla elde edilir -

if (navigator.onLine) {
   alert("You are Online");
}else {
   alert("You are Offline");
}

Çevrimdışı mod, cihazın bağlı olmadığı veya kullanıcının tarayıcı araç çubuğundan çevrimdışı modu seçtiği anlamına gelir.

Kullanıcıya ağın mevcut olmadığı konusunda nasıl bilgi verileceği ve bir WebSocket kapatma olayı meydana geldiğinde yeniden bağlanmaya nasıl çalışılacağı aşağıda açıklanmıştır -

socket.onclose = function (event) {
   // Connection closed.
   // Firstly, check the reason.
	
   if (event.code != 1000) {
      // Error code 1000 means that the connection was closed normally.
      // Try to reconnect.
		
      if (!navigator.onLine) {
         alert("You are offline. Please connect to the Internet and try again.");
      }
   }
}

Hata mesajları almak için demo

Aşağıdaki program, Web Soketleri kullanılarak hata mesajlarının nasıl gösterileceğini açıklamaktadır -

<!DOCTYPE html>
<html>
   <meta charset = "utf-8" />
   <title>WebSocket Test</title>

   <script language = "javascript" type = "text/javascript">
      var wsUri = "ws://echo.websocket.org/";
      var output;
		
      function init() {
         output = document.getElementById("output");
         testWebSocket();
      }
		
      function testWebSocket() {
         websocket = new WebSocket(wsUri);
			
         websocket.onopen = function(evt) {
            onOpen(evt)
         };
			
         websocket.onclose = function(evt) {
            onClose(evt)
         };
			
         websocket.onerror = function(evt) {
            onError(evt)
         };
      }
		
      function onOpen(evt) {
         writeToScreen("CONNECTED");
         doSend("WebSocket rocks");
      }
		
      function onClose(evt) {
         writeToScreen("DISCONNECTED");
      }
		
      function onError(evt) {
         writeToScreen('<span style = "color: red;">ERROR:</span> ' + evt.data);
      } 
		
      function doSend(message) {
         writeToScreen("SENT: " + message); websocket.send(message);
      }
		
      function writeToScreen(message) {
         var pre = document.createElement("p"); 
         pre.style.wordWrap = "break-word"; 
         pre.innerHTML = message; output.appendChild(pre);
      }
		
      window.addEventListener("load", init, false);
   </script>
	
   <h2>WebSocket Test</h2>
   <div id = "output"></div>
	
</html>

Çıktı aşağıdaki gibidir -