নতুন ব্রাউজারগুলির জন্য একাধিক ব্রাউজার ট্যাব এবং ক্লায়েন্টের অবস্থাকে সম্বোধন করে ওপেন সোর্স জাভাস্ক্রিপ্ট লাইব্রেরি রয়েছে? [বন্ধ]


11

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

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


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

1
আমার কলেজের শিক্ষক আমাকে তা শিখিয়েছিলেন HTTP is great (and beutiful) because it is stateless। যখনই আমি শিল্পে যোগ দিয়েছি, তখন থেকে আমি সেই ডিউটির সন্ধানে রয়েছি তবে এটি বেশ খুঁজে পাচ্ছি না। প্রত্যেকে কেবলমাত্র যে রাজ্যগুলি দেখছেন তা রাখার বিষয়ে কথা বলেন!
দিপান মেহতা

@ দিপনমহেতা: আপনি যদি আরএফসি 2616 দেখুন তবে আমি নিশ্চিত নই যে আপনি "সৌন্দর্যের" অংশটি সম্পর্কে আপনার শিক্ষকের সাথে একমত হবেন :) যদিও আমি আপনাকে জানিয়েছিলাম যে "খাঁটি রাষ্ট্রবিহীন" ধারণাটি সত্যিই দুর্দান্ত এবং আমি সমস্যাযুক্ত মনে করেছি আমরা এটি কসাই করছি ...
হাইলেম

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

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

উত্তর:


3

সংক্ষিপ্ত উত্তর:

আপনি সত্যই রাষ্ট্রের তথ্য এক ট্যাব থেকে অন্য ট্যাবকে দিতে পারবেন না ...

দীর্ঘ উত্তর:

আপনি সত্যই রাষ্ট্রের তথ্য এক ট্যাব থেকে অন্য ট্যাবে পাঠাতে পারবেন না কারণ এটি স্যান্ডবক্সিং এবং সুরক্ষার একটি অত্যন্ত গুরুতর লঙ্ঘন হবে।

আপনি যাইহোক, অপ্রত্যক্ষভাবে দুটি ট্যাবগুলির মধ্যে রাষ্ট্রের মাধ্যমে রাষ্ট্রটি পাস করতে পারেন :

অন্য বিকল্পটি কেবল 2 টি ট্যাবগুলির মধ্যে তথ্য প্রেরণের জন্য কুকিজের মাধ্যমে যোগাযোগ করতে পারে তবে এটি সম্ভবত সমস্যার কারণ হতে পারে, অত্যন্ত ব্রাউজার-নির্ভর এবং পৃষ্ঠা পুনরায় লোডের প্রয়োজন হবে (এবং সত্য কথা বলতে আমি এটির চেষ্টা করিনি এবং কেবল এটি সম্পর্কে ভেবে দেখিনি, কিন্তু অন্যরা আছে কাজ এটা )

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


আপডেট 1: এটি মুছে ফেলার আগে কেউ মন্তব্যে যেমন উল্লেখ করেছে (ইনবক্সে এটি প্রদর্শিত হয় না বলে ক্রেডিট দিতে পারে না, দুঃখিত)

এইচটিএমএল 5 window.postMessageএপিআই প্রবর্তন করে ।

কার্যকারী উদাহরণের জন্য, ক্রস-উইন্ডো মেসেজিংয়ের জন রেসিগের ব্লগ-পোস্ট দেখুন । এবং খুব মজার বিষয় হল, আপনি যদি এই পোস্টে দেওয়া মন্তব্যগুলি লক্ষ্য করেন তবে আপনি দেখতে পাবেন যে মাল্ট নামে একজনকে তারা আধুনিক ব্রাউজারগুলিতে ব্যবহার করার জন্য লিখেছিলেন একটি লাইব্রেরিwindow.postMessage , বা পুরানো ব্রাউজারগুলির একটি কুকি ভিত্তিক সংস্করণ উল্লেখ করেছে।

আরও বিশদ এবং উদাহরণের জন্য এগুলি পড়ুন:

আপডেট 2:

মনে রাখবেন যে, 2012-03-04 হিসাবে এইচটিএমএল 5 স্পেসিফিকেশন এখনও একটি খসড়া, তাই কিছু বৈশিষ্ট্য সরানো যেতে পারে । সুতরাং যত্ন সহকারে ব্যবহার করুন ...


আমি আপাতদৃষ্টিতে ভুল, যেহেতু এইচটিএমএল 5 উইন্ডো.পোস্টমেজেজ এপিআই প্রবর্তন করেছে।
হাইলেম

এছাড়াও, যদি আপনি ক্রস-উইন্ডো মেসেজিংয়ে জন রেসিগের ব্লগ-পোস্ট এবং মন্তব্যগুলি পড়েন তবে আপনি লক্ষ্য করবেন যে মাল্ট নামে একজন [লাইব্রেরি] উল্লেখ করেছেন [3] তারা আধুনিক ব্রাউজারগুলিতে এটি ব্যবহার করার জন্য লিখেছিলেন বা কুকি-ভিত্তিক সংস্করণ পুরানো ব্রাউজারগুলি, সুতরাং আমার কুকি জিনিসটি তেমন পাগল ছিল না।
হাইলেম

3

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


1

যদি আপনার উইন্ডোজ (পৃষ্ঠাগুলি) একই ডোমেন (উত্স) localStorageথেকে থাকে তবে ডেটা ভাগ করতে এবং বার্তা সম্প্রচার করতে ব্যবহার করা যেতে পারে। আপনার একটি বিষয় বিবেচনা করা উচিত তা হ'ল প্রতিটি ব্রাউজার উইন্ডো (পৃষ্ঠা) পৃথক থ্রেডে কাজ করে। সুতরাং, যদি আমরা ক্রস উইন্ডো যোগাযোগের বিষয়ে কথা বলি, তবে আমরা মাল্টিথ্রেডিংয়ের বিষয়েও কথা বলছি।

localStorageআইই এর সাথে আপনার কিছু বিষয় বিবেচনা করা উচিত :

  • আমি আইই 8 তে লোকালস্টোরের জন্য কিছু পরীক্ষা করেছি। লোকালস্টোরেশনে কয়েক হাজার পরিবর্তনের পরে, একই উত্সের উইন্ডোজগুলি 'স্টোরেজ' ইভেন্টগুলি পাওয়া বন্ধ করে দেয়। আরও বেশি, তারপরে আপনি একই লোকাল স্টোরেজ আইটেমটি থেকে পড়ার চেষ্টা করবেন, বিভিন্ন উইন্ডোতে মানগুলি পৃথক হতে পারে। সুতরাং, আমি বলব যে IE8 লোকালস্টোরেশন সমর্থন করে না

  • আইই 9 এবং আই 1010 'স্টোরেজ' ইভেন্ট হ্যান্ডলার কল করেও যদি স্থানীয় উইন্ডোটি এই উইন্ডো থেকে পরিবর্তিত হয় ( এটি নির্দিষ্টকরণের বিরুদ্ধে )।

  • এছাড়াও রয়েছে IE11 জ্ঞাত সমস্যাগুলি

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

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