ইন্টারনেট সংযোগটি অফলাইন রয়েছে তা সনাক্ত করুন?


246

কীভাবে ইন্টারনেট সংযোগটি জাভাস্ক্রিপ্টে অফলাইন রয়েছে তা সনাক্ত করবেন?


আপনি বা ইতিমধ্যে ওয়েবসকেটগুলি ব্যবহার করতে পারলে - ওয়েবসকেটে একটি ক্লোজ ইভেন্ট রয়েছে যা ব্যবহারকারী যদি সার্ভারের সাথে সংযোগ হারিয়ে ফেলে তবে অবশ্যই তাকে ডাকা উচিত।
সাইমন

উত্তর:


135

ব্যর্থ XHR অনুরোধ করে সংযোগটি হারিয়ে গেছে তা আপনি নির্ধারণ করতে পারেন ।

মানক পদ্ধতির অনুরোধটি হল কয়েকবার অনুরোধটি আবার চেষ্টা করা । যদি এটি অতিক্রম না করে তবে ব্যবহারকারীকে সংযোগটি পরীক্ষা করতে সতর্ক করুন , এবং নিখুঁতভাবে ব্যর্থ হন

সিডিনোট: পুরো অ্যাপ্লিকেশনটিকে "অফলাইন" অবস্থায় রাখার ফলে হ্যান্ডলিং রাষ্ট্রের প্রচুর ত্রুটি-প্রবণ কাজ হতে পারে .. ওয়্যারলেস সংযোগ আসতে পারে এবং যেতে পারে ইত্যাদি। তাই আপনার সেরা বাজি হতে পারে কেবল নিখুঁতভাবে ব্যর্থ হওয়া, সংরক্ষণ করা ডেটা এবং ব্যবহারকারীকে সতর্ক করুন .. তাদের যদি কোনও থাকে তবে শেষ পর্যন্ত সংযোগের সমস্যাটি ঠিক করার অনুমতি দেয় এবং আপনার অ্যাপ্লিকেশনটি যথেষ্ট পরিমাণ ক্ষমার সাথে ব্যবহার করা চালিয়ে যায়।

সিডিনোট: আপনি সংযোগের জন্য গুগলের মতো একটি নির্ভরযোগ্য সাইট চেক করতে পারেন, তবে এটি কেবল আপনার নিজের অনুরোধ করার চেষ্টা করার মতো পুরোপুরি কার্যকর নাও হতে পারে, কারণ গুগল উপলব্ধ থাকতে পারে, আপনার নিজের অ্যাপ্লিকেশনটি নাও থাকতে পারে এবং আপনি এখনও যাচ্ছেন আপনার নিজের সংযোগ সমস্যাটি পরিচালনা করতে হবে। গুগলে পিং পাঠানোর চেষ্টা করা আপনার ইন্টারনেট সংযোগ নিজেই নিচে রয়েছে তা নিশ্চিত করার একটি ভাল উপায় হতে পারে, সুতরাং যদি সেই তথ্যটি আপনার পক্ষে কার্যকর হয়, তবে এটি সমস্যার জন্য উপযুক্ত হতে পারে।

সিডিনোট : একটি পিং পাঠানো একইভাবে অর্জন করা যেতে পারে যে আপনি যে কোনও ধরণের দ্বিমুখী এজাক্স অনুরোধ করবেন তবে গুগলে একটি পিং পাঠানো এই ক্ষেত্রে কিছু চ্যালেঞ্জ তৈরি করতে পারে। প্রথমত, আমাদের কাছে একই ক্রস-ডোমেন সমস্যাগুলি রয়েছে যা সাধারণত অ্যাজাক্স যোগাযোগ তৈরির ক্ষেত্রে সম্মুখীন হয়। একটি বিকল্প হ'ল একটি সার্ভার-সাইড প্রক্সি সেটআপ করা, যার মধ্যে আমরা আসলে pingগুগল (বা যে কোনও সাইট) করি এবং পিংয়ের ফলাফলগুলি অ্যাপ্লিকেশনটিতে ফিরিয়ে আনি। এটি একটি ক্যাচ -22কারণ যদি ইন্টারনেট সংযোগটি আসলে সমস্যা হয় তবে আমরা সার্ভারে উঠতে পারব না, এবং যদি সংযোগ সমস্যাটি কেবল আমাদের নিজস্ব ডোমেনে থাকে তবে আমরা পার্থক্যটি বলতে পারব না। অন্যান্য ক্রস-ডোমেন কৌশলগুলি চেষ্টা করা যেতে পারে, উদাহরণস্বরূপ, আপনার পৃষ্ঠায় একটি আইফ্রেমে এম্বেড করা যা google.com এ নির্দেশ করে এবং তারপরে সাফল্য / ব্যর্থতার জন্য আইফ্রেমে ভোটদান (বিষয়বস্তু পরীক্ষা করা ইত্যাদি)। কোনও চিত্র এম্বেড করা সত্যিই আমাদের কিছু না বলবে, কারণ কী হচ্ছে তা সম্পর্কে ভাল সিদ্ধান্তে পৌঁছানোর জন্য আমাদের যোগাযোগ ব্যবস্থা থেকে একটি কার্যকর প্রতিক্রিয়া দরকার need সুতরাং আবারও, সামগ্রিকভাবে ইন্টারনেট সংযোগের স্থিতি নির্ধারণ করা এর পক্ষে মূল্য হিসাবে বেশি সমস্যা হতে পারে। আপনার নির্দিষ্ট অ্যাপ্লিকেশনটির জন্য আপনাকে এই বিকল্পগুলি ওজন করতে হবে।


84
পুনরাবৃত্ত "সিডিনোট" শোনাচ্ছে ডুইট শ্রুতের "প্রশ্ন ..." বলে :-)
ব্রায়ান কেলি

19
"ক্যাচ -22" সাহসী কেন?
কোডিংবারে

33
এখন ২০১২ সালে আপনি পরিবর্তনশীল নেভিগেটর.অনলাইন পরীক্ষা করতে পারেন;)
জোও পিন্টো জের্নিমো

13
নেভিগেটর.অনলাইন / অফলাইন একই কারণে অবিশ্বাস্য। দেখুন stackoverflow.com/questions/3181080/...
Efran Cobisi

17
আপনি কেবলমাত্র এই উদ্দেশ্যে তৈরি একটি ওপেন-সোর্স লাইব্রেরি, অফলাইন.js দেখতে চাইতে পারেন ।
আদম

51

IE 8 উইন্ডো.নভিগেটর.অনলাইন সম্পত্তি সমর্থন করবে ।

তবে অবশ্যই এটি অন্যান্য ব্রাউজার বা অপারেটিং সিস্টেমের সাথে সহায়তা করে না। আমি পূর্বাভাস দিয়েছি যে অন্যান্য ব্রাউজার বিক্রেতারা অ্যাজাক্স অ্যাপ্লিকেশনগুলিতে অনলাইন / অফলাইন স্থিতি জানার গুরুত্বের সাথে সেই সম্পত্তি সরবরাহ করার সিদ্ধান্ত নেবেন।

এটি না হওয়া পর্যন্ত এক্সএইচআর বা একটি Image()বা <img>অনুরোধ আপনার কার্যকারিতাটির কাছাকাছি কিছু সরবরাহ করতে পারে।

আপডেট (2014/11/16)

প্রধান ব্রাউজারগুলি এখন এই সম্পত্তিটিকে সমর্থন করে তবে আপনার ফলাফলগুলি পৃথক হবে।

মজিলা ডকুমেন্টেশন থেকে উদ্ধৃতি :

ক্রোম এবং সাফারিতে, ব্রাউজার যদি কোনও স্থানীয় অঞ্চল নেটওয়ার্ক (ল্যান) বা রাউটারের সাথে সংযোগ রাখতে সক্ষম না হয় তবে এটি অফলাইন হয়; অন্য সমস্ত শর্ত ফিরে true। আপনি যখন ধরে নিতে পারেন যে ব্রাউজারটি যখন এটি দেয় তখন অফলাইন থাকেfalse মান , তবে আপনি ধরে নিতে পারবেন না যে সত্যিকার মানটির অর্থ ব্রাউজারটি ইন্টারনেট অ্যাক্সেস করতে পারে। আপনি মিথ্যা ধনাত্মকতা পেতে পারেন, যেমন কম্পিউটারগুলি এমন ক্ষেত্রে যেখানে ভার্চুয়ালাইজেশন সফ্টওয়্যারটি চলছে যেখানে ভার্চুয়াল ইথারনেট অ্যাডাপ্টারগুলি সর্বদা "সংযুক্ত" থাকে। অতএব, আপনি যদি সত্যিই ব্রাউজারের অনলাইন অবস্থান নির্ধারণ করতে চান তবে আপনার চেক করার জন্য অতিরিক্ত উপায় বিকাশ করা উচিত।

ফায়ারফক্স এবং ইন্টারনেট এক্সপ্লোরারে ব্রাউজারটিকে অফলাইন মোডে স্যুইচ করা একটি falseমান প্রেরণ করে । অন্যান্য সমস্ত শর্তাবলী একটি trueমান ফেরত দেয় ।


5
নেভিগেটর.অনলাইন এইচটিএমএল 5 এর অংশ - অন্যান্য ব্রাউজারগুলির ইতিমধ্যে এটি সরবরাহ করে এমন বিকাশ সংস্করণ রয়েছে - এটি ফায়ারফক্স 3 এ ইতিমধ্যে উপলব্ধ।
ওলিজেজ

- তবে দুর্ভাগ্যক্রমে IE এর পূর্ববর্তী সংস্করণগুলিতে উপলভ্য নয়, যা আমাদের প্রায়শই সমর্থন করার প্রয়োজন হয়।
কেপারো

22
নেভিগেটর.অনলাইন ব্রাউজারের অবস্থা এবং প্রকৃত সংযোগটি নয়। সুতরাং আপনি আপনার ব্রাউজারটি অন লাইনে সেট থাকতে পারেন তবে সংযোগটি বন্ধ থাকায় এটি আসলে ব্যর্থ হবে। ব্রাউজারটি অফলাইন ব্রাউজিংতে সেট করা থাকলে নেভিগেটর.অনলাইন কেবল মিথ্যা হবে।

5
যদি আমি আমার Nexus7- এ WI-FI বন্ধ করি, পৃষ্ঠাটি এখনও বলে যে নেভিগেটর.অনলাইন সত্য। খারাপ ...
ওয়ালভ

42

প্রায় সমস্ত বড় ব্রাউজার এখন window.navigator.onLineসম্পত্তি, এবং সম্পর্কিত onlineএবং offlineউইন্ডো ইভেন্টগুলি সমর্থন করে :

window.addEventListener('online', () => console.log('came online'));
window.addEventListener('offline', () => console.log('came offline'));

আপনার সিস্টেম বা ব্রাউজারটিকে অফলাইন / অনলাইন মোডে সেট করার চেষ্টা করুন এবং window.navigator.onLineমান পরিবর্তনের জন্য কনসোল বা সম্পত্তিটি পরীক্ষা করুন । আপনি এই ওয়েবসাইটে এটি পরীক্ষা করতে পারেন ।

মজিলা ডকুমেন্টেশন থেকে এই উদ্ধৃতি নোট করুন :

ক্রোম এবং সাফারিতে, ব্রাউজার যদি কোনও স্থানীয় অঞ্চল নেটওয়ার্ক (ল্যান) বা রাউটারের সাথে সংযোগ রাখতে সক্ষম না হয় তবে এটি অফলাইন হয়; অন্য সমস্ত শর্ত ফিরে true। সুতরাং যখন আপনি অনুমান করতে পারেন যে ব্রাউজার অফলাইনে থাকা অবস্থায় যখন এটি একটি ফেরৎ falseমান , আপনি অনুমান করতে পারে না যে একটি trueমান অগত্যা মানে ব্রাউজার ইন্টারনেট অ্যাক্সেস করতে পারে । আপনি মিথ্যা ধনাত্মকতা পেতে পারেন, যেমন কম্পিউটারগুলি এমন ক্ষেত্রে যেখানে ভার্চুয়ালাইজেশন সফ্টওয়্যারটি চলছে যেখানে ভার্চুয়াল ইথারনেট অ্যাডাপ্টারগুলি সর্বদা "সংযুক্ত" থাকে। অতএব, আপনি যদি সত্যিই ব্রাউজারের অনলাইন অবস্থান নির্ধারণ করতে চান তবে আপনার চেক করার জন্য অতিরিক্ত উপায় বিকাশ করা উচিত।

ফায়ারফক্স এবং ইন্টারনেট এক্সপ্লোরারে ব্রাউজারটিকে অফলাইন মোডে স্যুইচ করা একটি falseমান প্রেরণ করে । ফায়ারফক্স ৪১ অবধি, সমস্ত অন্যান্য শর্তাবলীতে একটি trueমান ফিরে আসে ; ফায়ারফক্স ৪১, ওএস এক্স এবং উইন্ডোজ থেকে, মানটি আসল নেটওয়ার্ক সংযোগ অনুসরণ করবে।

(জোর আমার নিজের)

এর অর্থ হ'ল যদি window.navigator.onLineহয় false(বা আপনি কোনও offlineইভেন্ট পান) তবে আপনার কোনও ইন্টারনেট সংযোগ না থাকার গ্যারান্টি রয়েছে।

যদি এটি হয় trueতবে (বা আপনি কোনও onlineইভেন্ট পান) তবে এর অর্থ কেবল সিস্টেমটি কোনও কোনও নেটওয়ার্কের সাথে সংযুক্ত থাকে at এর অর্থ এই নয় যে উদাহরণস্বরূপ আপনার কাছে ইন্টারনেট অ্যাক্সেস রয়েছে। এটি যাচাই করতে, আপনাকে এখনও অন্য উত্তরে বর্ণিত সমাধানগুলির একটি ব্যবহার করতে হবে।

আমি প্রাথমিকভাবে এটিকে গ্রান্ট ওয়াগনারের উত্তরের আপডেট হিসাবে পোস্ট করার ইচ্ছা করেছিলাম তবে এটি সম্পাদনার খুব বেশি মনে হয়েছিল, বিশেষত বিবেচনা করে যে ২০১৪ আপডেটটি ইতিমধ্যে তাঁর কাছ থেকে আসে নি


সর্বোত্তম উত্তর. ধন্যবাদ।
vibs2006

1
আমি সম্প্রতি অফলাইন আচরণে কিছুটা কাজ করার সুযোগ পেয়েছি। ইভেন্টগুলি ব্যবহার করতে দুর্দান্ত, তবে আইওএস সাফারি সমস্যা তৈরি করবে। আপনি যখন আপনার ফোনে ইন্টারনেট চালু করেন তখন অফলাইন / অনলাইন ইভেন্টগুলি 2 সেকেন্ড অবধি বিলম্বিত হয় এবং এটি ভিজ্যুয়াল রেন্ডারিং কারণে সমস্যার কারণ হতে পারে, কারণ আপনি ভবিষ্যতের ভবিষ্যদ্বাণী করতে পারবেন না। এটি কেবল এমনই একটি বিষয় যা আমি উল্লেখ করতে চেয়েছিলাম এবং কাউকে সাহায্য করতে পারে।
তেজয়

38

এটি করার বিভিন্ন উপায় রয়েছে:

  • এজেএক্স আপনার নিজের ওয়েবসাইটে অনুরোধ। যদি সেই অনুরোধটি ব্যর্থ হয়, তবে এটির একটি খুব ভাল সুযোগ রয়েছে এটির ত্রুটিযুক্ত সংযোগ। JQuery ডকুমেন্টেশন উপর একটি অধ্যায় আছে ব্যর্থ AJAX অনুরোধ সামলাচ্ছে । এটি করার সময় একই উত্স নীতি সম্পর্কে সতর্ক থাকুন , যা আপনাকে আপনার ডোমেনের বাইরের সাইটগুলিতে অ্যাক্সেস করতে বাধা দিতে পারে।
  • আপনি একটি onerrorমধ্যে একটি রাখতে পারে img, মত

    <img src='http://www.example.com/singlepixel.gif' 
          onerror='alert("Connection dead");' />

    উত্স চিত্রটি সরানো / পুনরায় নামকরণ করা হলে এই পদ্ধতিটিও ব্যর্থ হতে পারে এবং সাধারণত এজ্যাক্স বিকল্পের নিকৃষ্ট পছন্দ হতে পারে।

সুতরাং এটি চেষ্টা ও সনাক্ত করার বিভিন্ন উপায় রয়েছে, কোনওটিই নিখুঁত নয়, তবে ব্রাউজারের স্যান্ডবক্স থেকে ঝাঁপিয়ে পড়ে সরাসরি ব্যবহারকারীর নেট সংযোগের স্থিতি অ্যাক্সেস করার দক্ষতার অভাবে, তারা সেরা বিকল্প বলে মনে হয়।


36
 if(navigator.onLine){
  alert('online');
 } else {
  alert('offline');
 }

11
এটি ব্রাউজারে থাকলে সর্বদা সত্য প্রদান করে।
স্লাভচো

2
ঠিক আছে প্রথমে আমি কেবল ল্যান অক্ষম করার চেষ্টা করছিলাম তবে এটি সর্বদা সত্যই ফিরে আসছিল। সুতরাং যখন আমি সমস্ত নেটওয়ার্ক (ল্যান 2, ভার্চুয়াল বক্স ইত্যাদি) অক্ষম করে ফেলি তখন এটি মিথ্যা ফিরত।
স্লাভচো

3
এই উত্তরটি 3 বছর আগে থেকে বেশ কয়েকটি বিদ্যমান উত্তরগুলি সদৃশ করে।
জেসনমারচার

2
এটি ইন্টারনেট সংযোগ যাচাই করে না, এটি কেবল ল্যান সংযোগটি যাচাই করে
সুগানথ জি

এইচটিএমএল 5, জাভাস্ক্রিপ্ট, ম্যাক বইতে (ওয়াইফাই ব্যবহার করে) এমনকি মোবাইলে কাজ করেছেন me তবে ইস্যুটি হ'ল - এতে যখন ওয়াইফাই থাকে তখন প্রতিবার সত্য ফিরে আসে এমনকি আমি ওয়াইফাইকে তদ্বিপরীতভাবে বন্ধ করে দিই।
এস ইয়াদব

11

এইচটিএমএল 5 অ্যাপ্লিকেশন ক্যাশে এপিআই নেভিগেটর.অনলাইন নির্দিষ্ট করে, যা বর্তমানে আই 88 বিটা, ওয়েবকিট (উদা।


11

আপনি aj .axax () এর errorকলব্যাক ব্যবহার করতে পারেন , যদি অনুরোধ ব্যর্থ হয় তবে আগুন লাগবে। তাহলে textStatusSTRING "সময়সীমার" সমান এটা সম্ভবত এর মানে হল সংযোগ নষ্ট হয়ে গেছে:

function (XMLHttpRequest, textStatus, errorThrown) {
  // typically only one of textStatus or errorThrown 
  // will have info
  this; // the options for this ajax request
}

ডক থেকে :

ত্রুটি : অনুরোধ ব্যর্থ হলে কল করতে একটি ফাংশন। ফাংশনটি তিনটি আর্গুমেন্ট পাস করেছে: এক্সএমএলএইচটিপিআরকোয়েস্ট অবজেক্ট, একটি স্ট্রিং যা ঘটেছে ত্রুটির ধরণের বর্ণনা দেয় এবং একটি ঘটলে ifচ্ছিক ব্যতিক্রম বস্তু বর্ণনা করে। দ্বিতীয় আর্গুমেন্টের জন্য সম্ভাব্য মানগুলি (নাল ছাড়াও) হ'ল "টাইমআউট", "ত্রুটি", "নোটডিমাইটিড" এবং "পার্সেরেরর"। এটি একটি আজাক্স ইভেন্ট

উদাহরণস্বরূপ:

 $.ajax({
   type: "GET",
   url: "keepalive.php",
   success: function(msg){
     alert("Connection active!")
   },
   error: function(XMLHttpRequest, textStatus, errorThrown) {
       if(textStatus == 'timeout') {
           alert('Connection seems dead!');
       }
   }
 });

9

হিসাবে olliej বললেন, ব্যবহার navigator.onLineব্রাউজার সম্পত্তি সঙ্গে সেই অনুযায়ী নেটওয়ার্কের অনুরোধ পাঠানো এবং চেয়ে বাঞ্ছনীয় developer.mozilla.org/En/Online_and_offline_events , এটা এমনকি Firefox এবং আইই পুরানো সংস্করণ সমর্থন করে।

সাম্প্রতিককালে, WHATWG আপনার প্রতিক্রিয়া জানাতে প্রয়োজন হলে ইভেন্টগুলি onlineএবং offlineইভেন্টগুলির সংযোজন নির্দিষ্ট করে দিয়েছেnavigator.onLine পরিবর্তনগুলির ।

দয়া করে ড্যানিয়েল সিলভিরা পোস্ট করেছেন এমন লিঙ্কের দিকেও মনোযোগ দিন যা উল্লেখ করে যে সার্ভারের সাথে সিঙ্ক করার জন্য সেই সংকেত / সম্পত্তির উপর নির্ভর করা সবসময় ভাল ধারণা নয়।


আপডেট: ২০১৫ সালের মতো এটি বেশিরভাগ ব্রাউজারে কাজ করছে বলে মনে হচ্ছে, ক্যানিউজ চার্ট এবং নিবন্ধ দেখুন
ওলগা

8
window.navigator.onLine

আপনি যা সন্ধান করছেন তা কিন্তু এখানে কয়েকটি জিনিস যুক্ত করতে হবে, প্রথমে এটি যদি আপনার অ্যাপ্লিকেশনটিতে এমন কিছু থাকে যা আপনি যাচাই করতে চান (ব্যবহারকারী হঠাৎ অফলাইনে চলে যায় কিনা তা দেখতে পছন্দ করুন, যা বেশিরভাগ সময় এই ক্ষেত্রে সঠিক হয়, তবে আপনি পরিবর্তনটিও শুনতে হবে), এর জন্য আপনি কোনও পরিবর্তন সনাক্ত করতে উইন্ডোতে ইভেন্ট শ্রোতাদের যুক্ত করেন, ব্যবহারকারী অফলাইনে যান কিনা তা যাচাই করার জন্য, আপনি এটি করতে পারেন:

window.addEventListener("offline", 
  ()=> console.log("No Internet")
);

এবং অনলাইনে কিনা তা পরীক্ষা করার জন্য:

window.addEventListener("online", 
  ()=> console.log("Connected Internet")
);

2
আপনার সাবধানতা অবলম্বন করতে হবে onLine। ব্রাউজারগুলি অনলাইনে থাকার অবস্থা খুব আলাদাভাবে সংজ্ঞায়িত করে। বিকাশকারী.মোজিলা.আর.ইন / ইউএস / ডকস / ওয়েবে / এপিআই / নেভিগেটরঅনলাইন / অন লাইন দেখুন
আন্দ্রেস বামগার্ট

1
আপনার উত্তরটি ভুল। 'অনলাইন' সম্পত্তিটির ইন্টারনেট সংযোগের সাথে কোনও সম্পর্ক নেই। ওয়েব এপিআই সম্পর্কে উপরের রেফারেন্সটি দেখুন।
আলেকজান্দ্রে ভি।

7

আমাকে এমন একটি গ্রাহকের জন্য একটি ওয়েব অ্যাপ তৈরি করতে হয়েছিল (এজাক ভিত্তিক) যা বিদ্যালয়ের সাথে প্রচুর পরিশ্রম করে, এই স্কুলগুলির প্রায়শই একটি খারাপ ইন্টারনেট সংযোগ থাকে আমি সংযোগ আছে কিনা তা সনাক্ত করতে এই সাধারণ ফাংশনটি ব্যবহার করি, খুব ভাল কাজ করে!

আমি কোডআইগনিটার এবং জ্যাকুরি ব্যবহার করি:

function checkOnline() {
    setTimeout("doOnlineCheck()", 20000);
}

function doOnlineCheck() {
    //if the server can be reached it returns 1, other wise it times out
    var submitURL = $("#base_path").val() + "index.php/menu/online";

    $.ajax({
        url : submitURL,
        type : "post",
        dataType : "msg",
        timeout : 5000,
        success : function(msg) {
            if(msg==1) {
                $("#online").addClass("online");
                $("#online").removeClass("offline");
            } else {
                $("#online").addClass("offline");
                $("#online").removeClass("online");
            }
            checkOnline();
        },
        error : function() {
            $("#online").addClass("offline");
            $("#online").removeClass("online");
            checkOnline();
        }
    });
}

6

আপনার অফলাইন থাকলে আপনার ডোমেনে একটি এজ্যাক্স কলটি সনাক্ত করার সহজতম উপায়

$.ajax({
      type: "HEAD",
      url: document.location.pathname + "?param=" + new Date(),
      error: function() { return false; },
      success: function() { return true; }
   });

এটি কেবল আপনাকে ধারণা দেওয়ার জন্য, এটি উন্নত করা উচিত।

যেমন ত্রুটি = 404 এর অর্থ এখনও অনলাইনে থাকা উচিত


4

আমি মনে করি এটি খুব সহজ উপায়।

var x = confirm("Are you sure you want to submit?");
if (x) {
  if (navigator.onLine == true) {
    return true;
  }
  alert('Internet connection is lost');
  return false;
}
return false;

অনলাইন এর অর্থ এই নয় যে একটি ইন্টারনেট সংযোগ রয়েছে। বিকাশকারী.মোজিলা.আর.আর.জ. অনুযায়ী- if the browser is not able to connect to a local area network (LAN) or a router, it is offline; all other conditions return true
ইউএস / ডকস

2

ইন্টারনেট ডাউন ছিল কিনা বা আমার সার্ভারটি ডাউন ছিল কিনা তা সনাক্ত করার জন্য আমি একটি ক্লায়েন্ট-সাইড সলিউশন খুঁজছিলাম। আমি অন্যান্য সমাধানগুলি সর্বদা খুঁজে পেয়েছি বলে মনে করি তৃতীয় পক্ষের স্ক্রিপ্ট ফাইল বা চিত্রের উপর নির্ভরশীল, যা আমার কাছে মনে হয় নি যে এটি সময়ের পরীক্ষায় দাঁড়াবে। একটি বাহ্যিক হোস্ট করা স্ক্রিপ্ট বা চিত্র ভবিষ্যতে পরিবর্তন হতে পারে এবং সনাক্তকরণ কোডটিকে ব্যর্থ করতে পারে।

আমি 404 কোড সহ একটি এক্সএইচআরস্ট্যাটাস সন্ধান করে এটি সনাক্ত করার একটি উপায় খুঁজে পেয়েছি। উপরন্তু, আমি সিওআরএস নিষেধাজ্ঞাকে বাইপাস করতে JSONP ব্যবহার করি। 404 ব্যতীত একটি স্থিতি কোড দেখায় যে ইন্টারনেট সংযোগ কাজ করছে না।

$.ajax({
    url:      'https://www.bing.com/aJyfYidjSlA' + new Date().getTime() + '.html',
    dataType: 'jsonp',
    timeout:  5000,

    error: function(xhr) {
        if (xhr.status == 404) {
            //internet connection working
        }
        else {
            //internet is down (xhr.status == 0)
        }
    }
});

2
এটি 10-5-2016 পর্যন্ত কাজ করে না তা নিশ্চিত নয় কেন কেবল অন্য মানুষের সময় নষ্ট হতে চান না।
ব্রেন

আমি মনে করি না এটি নিষিদ্ধ এবং খারাপ অনুরোধ ত্রুটির জন্য কাজ করবে :)
ফয়সাল নাসির

1

আমার পথ.

<!-- the file named "tt.jpg" should exist in the same directory -->

<script>
function testConnection(callBack)
{
    document.getElementsByTagName('body')[0].innerHTML +=
        '<img id="testImage" style="display: none;" ' +
        'src="tt.jpg?' + Math.random() + '" ' +
        'onerror="testConnectionCallback(false);" ' +
        'onload="testConnectionCallback(true);">';

    testConnectionCallback = function(result){
        callBack(result);

        var element = document.getElementById('testImage');
        element.parentNode.removeChild(element);
    }    
}
</script>

<!-- usage example -->

<script>
function myCallBack(result)
{
    alert(result);
}
</script>

<a href=# onclick=testConnection(myCallBack);>Am I online?</a>

1

কিছু পদ্ধতির সমস্যা navigator.onLineহ'ল এগুলি কিছু ব্রাউজার এবং মোবাইল সংস্করণের সাথে সামঞ্জস্যপূর্ণ নয়, এমন একটি বিকল্প যা আমাকে প্রচুর সহায়তা করেছিল তা ছিল ক্লাসিক XMLHttpRequestপদ্ধতিটি ব্যবহার করা এবং সেই সম্ভাব্য কেসটিও প্রত্যাশা করা ছিল যে প্রতিক্রিয়া সহ ফাইলটি ক্যাশে সংরক্ষণ করা হয়েছিল caseXMLHttpRequest.status প্রত্যাশা করে যে তার চেয়ে বড় is 200 এবং 304 এর চেয়ে কম।

আমার কোডটি এখানে:

 var xhr = new XMLHttpRequest();
 //index.php is in my web
 xhr.open('HEAD', 'index.php', true);
 xhr.send();

 xhr.addEventListener("readystatechange", processRequest, false);

 function processRequest(e) {
     if (xhr.readyState == 4) {
         //If you use a cache storage manager (service worker), it is likely that the
         //index.php file will be available even without internet, so do the following validation
         if (xhr.status >= 200 && xhr.status < 304) {
             console.log('On line!');
         } else {
             console.log('Offline :(');
         }
     }
}

0

দুটি পৃথক সেনেরিয়োর জন্য 2 টি উত্তর রয়েছে: -

  1. আপনি যদি কোনও ওয়েবসাইটে জাভাস্ক্রিপ্ট ব্যবহার করছেন (যেমন; বা কোনও সম্মুখ-প্রান্তের অংশ) এটি করার সহজতম উপায় হ'ল:

    <h2>The Navigator Object</h2>
    
    <p>The onLine property returns true if the browser is online:</p>
    
    <p id="demo"></p>
    
    <script>
      document.getElementById("demo").innerHTML = "navigator.onLine is " + navigator.onLine;
    </script>

  2. তবে আপনি যদি সার্ভারের পাশের জেএস ব্যবহার করছেন (যেমন; নোড ইত্যাদি), আপনি নির্ধারণ করতে পারেন যে ব্যর্থ এক্সএইচআর অনুরোধ করে সংযোগটি হারিয়ে গেছে।

    মানক পদ্ধতির অনুরোধটি হল কয়েকবার অনুরোধটি আবার চেষ্টা করা। যদি এটি অতিক্রম না করে তবে ব্যবহারকারীকে সংযোগটি পরীক্ষা করতে সতর্ক করুন, এবং নিখুঁতভাবে ব্যর্থ হন।


0

অনুরোধের ত্রুটি মধ্যে মাথা অনুরোধ

$.ajax({
    url: /your_url,
    type: "POST or GET",
    data: your_data,
    success: function(result){
      //do stuff
    },
    error: function(xhr, status, error) {

      //detect if user is online and avoid the use of async
        $.ajax({
            type: "HEAD",
            url: document.location.pathname,
            error: function() { 
              //user is offline, do stuff
              console.log("you are offline"); 
              }
         });
    }   
});

-1

আমার কাছে থাকা সহায়ক সহায়তার একটি স্নিপেট এখানে। এটি নামগতির জাভাস্ক্রিপ্ট:

network: function() {
    var state = navigator.onLine ? "online" : "offline";
    return state;
}

আপনার পদ্ধতিটি সনাক্তকরণের সাথে এটি ব্যবহার করা উচিত অন্যথায় এটি করার একটি 'বিকল্প' উপায় বন্ধ করে দেওয়া উচিত। সময়টি খুব দ্রুত এগিয়ে আসছে যখন এই সমস্ত প্রয়োজন হবে। অন্যান্য পদ্ধতি হ্যাক হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.