এইচটিটিপি / 2 টিপ সবেমাত্র পড়া শেষ করার পরে , আমি মনে করি যে HTTP / 2 বেশিরভাগ ব্যবহারের ক্ষেত্রে অপ্রচলিত ওয়েবসকেটগুলি করে, তবে সম্ভবত সমস্ত কিছু নয়।
PUSH_PROMISE
(কথোপকথন সার্ভার পুশ হিসাবে পরিচিত) এখানে সমস্যা নয়। এটি কেবল একটি পারফরম্যান্স অপ্টিমাইজেশন।
ব্রাউজারে ওয়েবসাইটসকেটের জন্য প্রধান ব্যবহারের ক্ষেত্রে হ'ল ডেটা দ্বি নির্দেশমূলক স্ট্রিমিং সক্ষম করা। সুতরাং, আমি মনে করি যে ওপি-র প্রশ্নটি এইচটিটিপি / ২ ব্রাউজারে দ্বি নির্দেশমূলক স্ট্রিমিং সক্ষম করার জন্য আরও ভাল কাজ করে কিনা এবং আমি মনে করি যে হ্যাঁ, এটি হয়েছে does
প্রথম সব, এটি হয় দ্বি-দ্বি। কেবলমাত্র স্ট্রিম বিভাগের ভূমিকা পড়ুন :
একটি "স্ট্রিম" কোনও HTTP / 2 সংযোগের মধ্যে ক্লায়েন্ট এবং সার্ভারের মধ্যে বিনিময় করা ফ্রেমের একটি স্বতন্ত্র, দ্বি নির্দেশমূলক অনুক্রম ire স্ট্রিমগুলির কয়েকটি গুরুত্বপূর্ণ বৈশিষ্ট্য রয়েছে:
একটি একক এইচটিটিপি / 2 সংযোগে একাধিক স্ট্রিম থেকে অন্তঃসত্ত্বা ফ্রেমগুলি অন্তর্ভুক্ত করে একসাথে একযোগে খোলা স্ট্রিম থাকতে পারে।
স্ট্রিমগুলি ক্লায়েন্ট বা সার্ভারের দ্বারা প্রতিষ্ঠিত ও একতরফাভাবে ব্যবহার করা বা ভাগ করা যায়।
স্ট্রিমগুলি শেষ প্রান্তে বন্ধ হয়ে যেতে পারে can
এই জাতীয় নিবন্ধগুলি (অন্য উত্তরে লিঙ্কিত) এইচটিটিপি / 2 এর এই দিকটি সম্পর্কে ভুল। তারা বলে বিড়ি নয়। দেখুন, একটি জিনিস যা HTTP / 2 এর সাথে ঘটতে পারে না: সংযোগটি খোলার পরে, সার্ভারটি একটি নিয়মিত স্ট্রিম শুরু করতে পারে না, কেবল একটি ধাক্কা স্ট্রিম। তবে একবার ক্লায়েন্ট কোনও অনুরোধ প্রেরণ করে একটি স্ট্রিমটি খুললে, উভয় পক্ষই স্থির সকেটের মাধ্যমে যে কোনও সময় - সম্পূর্ণ বিডিতে ডেটা ফ্রেমগুলি প্রেরণ করতে পারে।
এটি ওয়েবসকেট থেকে খুব বেশি আলাদা নয়: সার্ভারটিও ডেটা পাঠাতে পারার আগে ক্লায়েন্টকে একটি ওয়েবসকেট আপগ্রেড অনুরোধ শুরু করতে হবে।
সবচেয়ে বড় পার্থক্যটি হ'ল ওয়েবসকেটগুলির বিপরীতে, এইচটিটিপি / 2 তার নিজস্ব মাল্টিপ্লেক্সিং শব্দার্থবিজ্ঞানের সংজ্ঞা দেয়: কীভাবে স্ট্রিমগুলি শনাক্তকারী হয় এবং ফ্রেমগুলি কীভাবে স্ট্রিমের আইডি বহন করে তা বহন করে। এইচটিটিপি / ২ প্রবাহকে অগ্রাধিকার দেওয়ার জন্য প্রবাহ নিয়ন্ত্রণ শব্দার্থবিদ্যাও সংজ্ঞায়িত করে। বিডির বেশিরভাগ বাস্তব-জগত অ্যাপ্লিকেশনগুলিতে এটি গুরুত্বপূর্ণ।
(এই ভুল নিবন্ধটি আরও বলেছে যে ওয়েবসাইটসকেট স্ট্যান্ডার্ডে মাল্টিপ্লেক্সিং রয়েছে No না এটি নেই that এটি খুঁজে পাওয়া সত্যিই কঠিন নয়, কেবল ওয়েবসাইটসকেট আরএফসি 6455 খুলুন এবং ⌘-এফ টিপুন এবং "মাল্টিপ্লেক্স" টাইপ করুন you আপনি পড়ার পরে
প্রোটোকল এক্সটেনসিবল করার উদ্দেশ্যে; ভবিষ্যতের সংস্করণগুলি সম্ভবত মাল্টিপ্লেক্সিংয়ের মতো অতিরিক্ত ধারণাগুলি প্রবর্তন করবে।
আপনি দেখতে পাবেন যে ওয়েবসাইটসকেট মাল্টিপ্লেক্সিংয়ের জন্য 2013 খসড়া সম্প্রসারণ রয়েছে । তবে আমি জানি না কোন ব্রাউজারগুলি, যদি থাকে তবে সেটিকে সমর্থন করে। আমি সেই এক্সটেনশনের পিছনে আমার এসপিএ ওয়েব অ্যাপ তৈরির চেষ্টা করব না, বিশেষত এইচটিটিপি / 2 আসার সাথে সাথে, সমর্থনটি কখনই আসতে পারে না)।
মাল্টিপ্লেক্সিং হ'ল এক ধরণের জিনিস যা সাধারণত আপনি নিজেকে বিডির জন্য একটি ওয়েবসকেট খুললে বলবেন, একক পৃষ্ঠার অ্যাপ্লিকেশনটি কার্যকরভাবে আপডেট করার জন্য বলুন। আমি HTTP / 2 স্পেসে খুশি, একবার এবং সকলের যত্ন নেওয়া।
আপনি যদি HTTP / 2 কী করতে পারেন তা জানতে চান, কেবল জিআরপিসি দেখুন। জিআরপিসি এইচটিটিপি / ২ জুড়ে প্রয়োগ করা হয়। অর্ধ এবং পূর্ণ দ্বৈত স্ট্রিমিং বিকল্পগুলি দেখুন যা জিআরপিসি অফার করে। (দ্রষ্টব্য যে জিআরপিসি বর্তমানে ব্রাউজারগুলিতে কাজ করে না, তবে এটি আসলে কারণ ব্রাউজারগুলি (1) ক্লায়েন্ট জাভাস্ক্রিপ্টে HTTP / 2 ফ্রেমটি প্রকাশ করে না এবং (2) সাধারণত ট্রেলারগুলি সমর্থন করে না যা এতে ব্যবহৃত হয় জিআরপিসি স্পেস।)
ওয়েবসকেটের এখনও কোথায় জায়গা থাকতে পারে? বড়টি হ'ল সার্ভার-> ব্রাউজারটি বাইনারি ডেটা পুশ করে। এইচটিটিপি / 2 সার্ভার-> ব্রাউজারটিকে বাইনারি ডেটা ধাক্কা দেয় তবে এটি ব্রাউজার জেএস-এ প্রকাশিত হয় না। অডিও এবং ভিডিও ফ্রেমগুলিকে পুশ করার মতো অ্যাপ্লিকেশনগুলির জন্য, এটি ওয়েবসকেটগুলি ব্যবহার করার একটি কারণ।
সম্পাদনা করুন: 172020 জানুয়ারী
সময়ের সাথে সাথে এই উত্তরটি ধীরে ধীরে শীর্ষে উঠে গেছে (যা ভাল, কারণ এই উত্তরটি কম-বেশি সঠিক)। তবে এখনও মাঝে মাঝে মন্তব্য রয়েছে যে এটি বিভিন্ন কারণে সঠিক নয়, সাধারণত PUSH_PROMISE
কোনও একক অ্যাপ্লিকেশনটিতে মেসেজ-ওরিয়েন্টেড সার্ভার -> ক্লায়েন্ট পুশ সম্পর্কে কীভাবে বিভ্রান্তির সাথে সম্পর্কিত তা সম্পর্কিত । এবং, ব্রাউজারে ওয়েবসকেটের জন্য ব্যবহারের কেস রয়েছে যা সার্ভার-পুশড বাইনারি ডেটা। জেএসএন সহ পাঠ্যগত তথ্যের জন্য, ওয়েবসকেট ব্যবহার করবেন না, এসএসই ব্যবহার করুন।
পুনরুদ্ধার করতে: HTTP / 2 প্রোটোকল পূর্ণ দ্বি-di। তবে আধুনিক ওয়েব ব্রাউজারগুলি জাভাস্ক্রিপ্টে ফ্রেম-ভিত্তিক HTTP / 2 প্রোটোকল প্রকাশ করে না । নিঃসন্দেহে, আপনি যদি এইচটিটিপি / ২ সংযোগের মাধ্যমে একই উত্সের জন্য একাধিক অনুরোধ করেন তবে হুডের নীচে সেই সমস্ত ট্র্যাফিকই একটি সংযোগে মাল্টিপ্লেক্স হয়ে যায় (এবং এটিই আমরা যত্ন করি!)!
সুতরাং আপনার যদি একটি রিয়েল-টাইম চ্যাট অ্যাপ্লিকেশন তৈরি করার প্রয়োজন হয় তবে আসুন আমরা বলি যে যেখানে আপনাকে চ্যাট রুমের সমস্ত ক্লায়েন্টের সাথে নতুন চ্যাট বার্তাগুলির ব্রডকাস্ট করতে হবে যেখানে মুক্ত সংযোগ রয়েছে, আপনি ওয়েবকোকেট ছাড়াই এটি করতে পারেন (এবং সম্ভবত হওয়া উচিত)।
আপনি বার্তাটি নিচে রাখতে সার্ভার-প্রেরিত ইভেন্টগুলি এবং অনুরোধগুলি প্রেরণের জন্য এপিআই আনুন । সার্ভার-প্রেরিত ইভেন্টস (এসএসই) একটি স্বল্প-পরিচিত তবে সুপরিচিত সমর্থিত এপিআই যা কোনও বার্তা-ওরিয়েন্টেড সার্ভার-থেকে-ক্লায়েন্ট স্ট্রিম প্রকাশ করে। যদিও এটি ক্লায়েন্ট জাভাস্ক্রিপ্টের মতো লাগে না, আপনার হুডের নীচে আপনার ব্রাউজারটি (যদি এটি HTTP / 2 সমর্থন করে) এই সমস্ত বার্তাকে একাধিকবার একক টিসিপি সংযোগটি পুনরায় ব্যবহার করবে। দক্ষতার কোনও ক্ষতি নেই এবং প্রকৃতপক্ষে এটি ওয়েবসকেটগুলির চেয়ে লাভ। একাধিক স্ট্রিম দরকার? একাধিক ইভেন্টসোর্স খুলুন! এগুলি আপনার জন্য স্বয়ংক্রিয়ভাবে মাল্টিপ্লেক্স হবে।
ওয়েবসকেট হ্যান্ডশেকের চেয়ে বেশি রিসোর্স দক্ষ এবং কম প্রাথমিক অলসতা থাকা ছাড়াও, সার্ভার-প্রেরিত ইভেন্টগুলিতে এমন দুর্দান্ত সম্পত্তি রয়েছে যা তারা স্বয়ংক্রিয়ভাবে পিছনে পড়ে এবং এইচটিটিপি / ১.১ এ কাজ করে। তবে আপনার যখন কোনও HTTP / 2 সংযোগ রয়েছে তারা অবিশ্বাস্যভাবে ভাল কাজ করে well
প্রতিক্রিয়াশীলভাবে আপডেট হওয়া এসপিএটি সম্পাদন করার বাস্তব-বিশ্বের উদাহরণ সহ একটি ভাল নিবন্ধ এখানে ।