ক্লায়েন্টের অনুরোধ ছাড়াই সার্ভার থেকে ক্লায়েন্টে ডেটা ঠেলাচ্ছেন?


11

স্ট্যাক এক্সচেঞ্জ ব্রাউজ করার সময় আমি লক্ষ্য করেছি যে "3 টি নতুন বার্তা, প্রদর্শন করতে ক্লিক করুন" এর মতো গতিময় বিজ্ঞপ্তি রয়েছে। আমি যা ব্যাখ্যা করতে চলেছি তার জন্য এই জাতীয় গতিশীল আপডেট করতে চাই।

ধরা যাক আমি সাম্প্রতিক 10 টি নিবন্ধের ক্যারোসেল / স্লাইডশো তৈরি করতে চাই। আমি চাই এই ক্যারোসেলটি একটি কাতারে, প্রতি ঘণ্টায় আপডেট করা হোক। নতুন নিবন্ধগুলি পুরানো নিবন্ধগুলিকে সারি থেকে দূরে সরিয়ে দেবে। আমার মাথার উপরের সমাধানটি হবে।

  1. ব্যবহারকারী ক্লায়েন্ট লগ ইন।
  2. ক্লায়েন্ট পরের ঘন্টা চিহ্ন পর্যন্ত # মিনিটের গণনা করে এবং একটি ঘন্টা নির্বাহের জন্য টাইমার সেট করে।
  3. মুহুর্তের চিহ্নটিতে, ইতিমধ্যে কারাউসলে নেই এমন কোনও নতুন সংবাদ নিবন্ধ সম্পর্কে সার্ভারকে একটি অনুরোধ প্রেরণ করুন ।
  4. প্রতিক্রিয়া হ্যান্ডেল।
  5. টাইমার পুনরায় সেট করুন।

এটি কি গ্রহণযোগ্য কৌশল? আমি কি ক্লায়েন্টের অনুরোধের উপর নির্ভর না করে এটি অর্জন করতে পারি? অন্য কথায় স্ট্যাক এক্সচেঞ্জ কীভাবে তার গতিশীল আপডেটিং অর্জন করে?


4
সিগন্যালআরটি দেখুন।
রবার্ট হার্ভে

আমি আপনাকে পরামর্শের জন্য আরএসএস এবং এজেএক্স পড়ার পরামর্শ দিচ্ছি । আরএসএস সাবস্ক্রিপশন ফিডের জন্য একটি প্রমিত প্রোটোকলের একটি উদাহরণ এবং পৃষ্ঠাটি পুনরায় লোড না করে কীভাবে কোনও ক্লায়েন্ট (ব্রাউজার) আপডেট করবেন তার জন্য এজেএক্স একটি উচ্চ-স্তরের ধারণা। আমি বাজি ধরব স্ট্যাক এক্সচেঞ্জ কীভাবে এটি কাজ করে।

1
@ স্নোম্যান স্ট্যাক এক্সচেঞ্জ ওয়েবস্কট ব্যবহার করে মেটা.স্ট্যাকেক্সেঞ্জাওন.কম
রবার্ট হার্ভে

ক্লায়েন্টটি কি ব্রাউজার, একটি কাস্টম ক্লায়েন্ট বা অন্য কিছু?
outis

এটি কিছুটা ব্যবহারকারীর প্রতিকূল, তবে আপনি প্রতি 15 মিনিট বা তারপরে HTML পৃষ্ঠায় নিজেকে রিফ্রেশ করতে পারেন। বেশিরভাগ নিউজ ওয়েব পৃষ্ঠাগুলি এটি করে।
গিলবার্ট লে ব্ল্যাঙ্ক

উত্তর:


7

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

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

অবিচ্ছিন্ন সংযোগ রাখতে মনে রাখা একটি উদাহরণ হ'ল লাইভ চ্যাট / তাত্ক্ষণিক বার্তাপ্রেরণ সিস্টেম, কারণ যোগাযোগটি আসল সময়ে হওয়া উচিত time

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


2

মূলত আপনাকে ক্লায়েন্টের কাছে ডেটা চাপতে হবে, এবং দ্বি-নির্দেশমূলক যোগাযোগ যেমন HTTP প্রোটোকলের সুযোগ নয়, এটি আপনার নিজের থেকে প্রয়োগ করা সহজ নয়।

আপনার সমস্যার সমাধানটি সকেট.ইও

যেমন এর ওয়েবসাইট হিসাবে বলা হয়েছে,

"সকেট.আইও রিয়েল-টাইম দ্বি নির্দেশমূলক ইভেন্ট ভিত্তিক যোগাযোগ সক্ষম করে It এটি নির্ভরযোগ্যতা এবং গতির প্রতি সমানভাবে মনোযোগ নিবদ্ধ করে প্রতিটি প্ল্যাটফর্ম, ব্রাউজার বা ডিভাইসে কাজ করে।"

এই আপনার সমস্যার সমাধান হবে আশা করি।


7
আপনি যদি সকেট.ইওয়ের সাথে যুক্ত হন এবং কীভাবে এটি আপনার জ্ঞান / কাঠামোর সাথে অভিজ্ঞতার ভিত্তিতে (ওয়েবসাইটটির কেবল "মিশনের বিবৃতি" এর বিপরীতে) প্রশ্নকারীদের সমস্যা সমাধানে সহায়তা করবে তবে আপনি কীভাবে সহায়তা করবেন তা সহায়ক হবে It
বেনি

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

1

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

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

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

আপনি কী যাচ্ছেন সে সম্পর্কে আমি যদি ভুল বুঝে থাকি তবে আমি যা চাইছি তা সম্পূর্ণরূপে নিশ্চিত না হওয়ায় আমি ক্ষমা চাই। তবে আশা করি যে কোনও উপায়ে এখানে আপনার জন্য মূল্যবান কিছু রয়েছে!

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