আরএসটি এপিআই প্রতিস্থাপনের জন্য ওয়েবসকেট এপিআই?


101

আমার কাছে একটি অ্যাপ্লিকেশন রয়েছে যার প্রাথমিক ফাংশনটি ওয়েবসকেট বা দীর্ঘ ভোটদানের মাধ্যমে রিয়েল টাইমে কাজ করে।

তবে সাইটটির বেশিরভাগ অংশই একটি রেস্টলফুল ফ্যাশনে লেখা হয়েছে, যা ভবিষ্যতে অ্যাপ্লিকেশন এবং অন্যান্য ক্লায়েন্টদের জন্য দুর্দান্ত। যাইহোক, আমি REST থেকে দূরে সমস্ত সাইট ফাংশনের জন্য একটি ওয়েবসকেট এপিআইতে স্থানান্তরিত করার বিষয়ে ভাবছি। এটি আমার পক্ষে সাইটের সমস্ত অংশে রিয়েল টাইম বৈশিষ্ট্যগুলিকে একীভূত করা সহজ করে তুলবে। এটি কি অ্যাপ্লিকেশন বা মোবাইল ক্লায়েন্ট তৈরি করা আরও কঠিন করে তুলবে?

আমি দেখতে পেয়েছি যে কিছু লোক ইতিমধ্যে এই জাতীয় জিনিসগুলি করছে: সকেট স্ট্রিম


2
@ স্টেগি দীর্ঘ পোলিং ফ্যালব্যাক হিসাবে যথেষ্ট কাজ করে, এটি সম্পর্কে খুব বেশি উদ্বিগ্ন নয়।
হ্যারি

2
হ্যারি এখন 7 বছর পরে, এটি আপনার পক্ষে কীভাবে কাজ করেছিল? ভাবছি, যেহেতু আমিও সেই দিকে যেতে চাই। @ হ্যারি
দিমিত্রি

2
পুনঃটুইট করেছেন Ditionতিহ্যবাহী পদ্ধতিটি আমার পক্ষে ভাল কাজ করেছিল এবং খুব বেশি কঠিন ছিল না।
হ্যারি

উত্তর:


97

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

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

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

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

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

নীচে পড়ার-পরে লিঙ্কগুলির একটি তালিকা রয়েছে যা আমি সংগ্রহ করছিলাম। আমি নিশ্চিত করে বলতে পারি না যে তারা সকলেই সার্থক, কারণ আমি কেবল তাদের বেশিরভাগকেই স্কিম করেছি। তবে আশা করি কেউ কেউ সাহায্য করবে।


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

নোড.জেএস / সকেট.আইও / ব্যাকবোন.জেএস / এক্সপ্রেস / কানেক্ট / জেড / প্রমাণীকরণ, জয়েন্ট হোস্টিং ইত্যাদির সাথে রেডিসের টিউটোরিয়াল:

ব্যাকবোন.জেএস সহ পুশার ব্যবহারের বিষয়ে টিউটোরিয়াল (রেলগুলি ব্যবহার করে):

ক্লায়েন্টে ব্যাকবোন.জেএস সহ অ্যাপ্লিকেশন তৈরি করুন এবং সার্ভারে এক্সপ্রেস, সকেট.ইও, ডনোড সহ নোড.জেএস।

ডিএনড দিয়ে ব্যাকবোন ব্যবহার:


1
আমি কেবলমাত্র একটি সম্পর্কিত প্রশ্নের উত্তর দিয়েছি এবং আরও কয়েকটি চিন্তা অন্তর্ভুক্ত করেছি: স্ট্যাকওভারফ্লো
টুরেন

11
"আমি এখনও নিশ্চিতভাবে বলতে পারি যে এটি একটি ভাল সমাধান" এর আগে আমার আরও অনেক দীর্ঘ পথ রয়েছে "- জাস্ট কৌতূহল, এটি কি সত্যিই একটি ভাল সমাধান ছিল? : ডি
inf3rno

7
দয়া করে @ টাওরেনকে উত্তর দিন। আপনার এখন যা বলতে হবে তাতে আমি খুব আগ্রহী।
No_name

4
@ টৌরেন আমি কী আগ্রহী তা সম্পর্কে কী আগ্রহী?
কুড়েন

57

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

অনুরোধ-উত্তর যোগাযোগ বনাম পুশ

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

আপনার যদি সার্ভার থেকে ডেটা পুশ করার প্রয়োজন না হয় তবে একটি স্টেটলেস HTTP REST সার্ভারটি ব্যবহার করা সহজ। এইচটিটিপি একটি সাধারণ অনুরোধ-উত্তর যোগাযোগের প্যাটার্ন ব্যবহার করে।


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

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

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

2
কেবল পুশ করার জন্য নয় - ওয়েলসকেটগুলি আরএসটি কলের চেয়ে সহজতর হতে পারে এমন অনেকগুলি কারণ রয়েছে। ওয়েবসকেট.অর্গ
বিটি

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

40

আমি সমস্ত সাইটের ফাংশনগুলির জন্য কোনও ওয়েবসকেট এপিআইতে স্থানান্তরিত করার কথা ভাবছি

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

WebSocket এরআরআরএসএফুল এইচটিটিপির চেয়ে একটি আরও কার্যকর প্রোটোকল তবে নীচের অঞ্চলে ওয়েবস্কোটের চেয়ে এখনও রিস্টফুল HTTP স্কোর score

  1. তৈরি / আপডেট / মুছুন সংস্থানগুলি HTTP- র জন্য ভাল সংজ্ঞা দেওয়া হয়েছে। ওয়েবসকেটগুলির জন্য আপনাকে নিম্ন স্তরে এই ক্রিয়াকলাপগুলি প্রয়োগ করতে হবে।

  2. ওয়েবসকেট সংযোগগুলি এমন একক সার্ভারে উল্লম্বভাবে স্কেল যেখানে HTTP সংযোগ হিসাবে অনুভূমিকভাবে স্কেল হয়। ওয়েবসকেট অনুভূমিক স্কেলিংয়ের জন্য কিছু মালিকানাবিহীন মান-ভিত্তিক সমাধান রয়েছে।

  3. এইচটিটিপি অনেক ভাল বৈশিষ্ট্য নিয়ে আসে যেমন ক্যাচিং, রাউটিং, মাল্টিপ্লেক্সিং, গিজিপিং ইত্যাদি you এগুলি আপনি ওয়েবসাইটকেট বেছে নিলে ওয়েবসাইটসকেটের শীর্ষে তৈরি করতে হবে।

  4. অনুসন্ধান ইঞ্জিন অপ্টিমাইজেশানগুলি HTTP URL গুলির জন্য ভাল কাজ করে।

  5. সমস্ত প্রক্সি, ডিএনএস, ফায়ারওয়ালগুলি এখনও ওয়েবস্কট ট্র্যাফিক সম্পর্কে পুরোপুরি সচেতন নয়। তারা 80 বন্দরের অনুমতি দেয় তবে প্রথমে স্নুপ করে ট্র্যাফিক সীমাবদ্ধ করে।

  6. ওয়েবসকেটের সাথে সুরক্ষা সর্বস্ব বা কিছুই নয়।

আরও বিশদ জন্য এই নিবন্ধটি দেখুন।


3
এটি সেরা উত্তর।
ম্যাটওয়েলার


10

টিসিপি (ওয়েবসকেটস) কে আপনার প্রধান ওয়েব সামগ্রী বিতরণ কৌশল হিসাবে আমি ব্যবহার করতে পারার একমাত্র সমস্যা হ'ল টিসিপি ব্যবহার করে কীভাবে আপনার ওয়েবসাইটের আর্কিটেকচার এবং পরিকাঠামো ডিজাইন করা যায় সে সম্পর্কে খুব কম পঠন সামগ্রী রয়েছে।

সুতরাং আপনি অন্য ব্যক্তির ভুল থেকে শিখতে পারবেন না এবং উন্নয়ন ধীর হতে চলেছে। এটি "চেষ্টা ও পরীক্ষিত" কৌশলও নয়।

অবশ্যই আপনার এইচটিটিপির সমস্ত সুবিধা হারাতে চলেছে (রাষ্ট্রবিহীন হওয়া, এবং ক্যাচিং আরও বড় সুবিধা)।

মনে রাখবেন যে HTTP ওয়েব সামগ্রী সরবরাহ করার জন্য ডিজাইন করা টিসিপি-র জন্য একটি বিমূর্ততা।

এবং আসুন ভুলে যাবেন না যে এসইও এবং অনুসন্ধান ইঞ্জিনগুলি ওয়েবসকেটগুলি করে না। সুতরাং আপনি এসইও সম্পর্কে ভুলে যেতে পারেন।

ব্যক্তিগতভাবে আমি এর বিরুদ্ধে সুপারিশ করব কারণ সেখানে খুব বেশি ঝুঁকি রয়েছে।

ওয়েবসাইটগুলি পরিবেশন করার জন্য ডাব্লুএস ব্যবহার করবেন না, ওয়েব অ্যাপ্লিকেশন পরিবেশন করার জন্য এটি ব্যবহার করুন

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


7

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

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

সংযোগগুলি নির্ভরযোগ্য করে তুলতে আমাদের কিছুটা সময় চুপচাপ করতে হয়েছিল। আমরা কয়েকটি সস্তার ওয়েবসকেট টিউটোরিয়াল দিয়ে শুরু করেছি, কিন্তু আবিষ্কার করেছি যে সংযোগটি ভেঙে গেলে আমাদের বাস্তবায়ন স্বয়ংক্রিয়ভাবে পুনরায় সংযোগ করতে সক্ষম হয় নি। যখন আমরা সকেট-আইওতে স্যুইচ করেছি তখন এটির সমস্ত উন্নতি হয়েছে। সকেট-আইও একটি আবশ্যক!

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

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

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

সব বলার পরে, আমরা পরের সপ্তাহে লাইভ যাব। আমরা সময় মতো সেখানে পৌঁছেছি, সবকিছু কাজ করে। এবং এটি দ্রুত, তবে এটি কি স্কেল হবে?


আমরা যখন এই সিদ্ধান্তটি নিজেরাই করার চেষ্টা করছি তখনই ভাবছি, এটি কি এডাব্লুএসের সাথে ভালভাবে স্কেল হয়েছে?
গাবে

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

4

আমি উভয় ব্যবহার বিবেচনা করবে । প্রতিটি প্রযুক্তির নিজস্ব যোগ্যতা থাকে এবং কোনও সমাধান একক আকারের হয় না fits

কাজের বিচ্ছেদ এইভাবে চলে:

  1. ওয়েবসকেট হবে প্রাথমিক পদ্ধতি সার্ভার যেখানে একটি সেশন প্রয়োজন বোধ করা হয় সঙ্গে যোগাযোগ করার জন্য একটি অ্যাপ্লিকেশন আছে। এটি পুরানো ব্রাউজারগুলির জন্য প্রয়োজনীয় অনেকগুলি হ্যাক সরিয়ে দেয় (সমস্যাটি পুরানো ব্রাউজারগুলির জন্য সমর্থন যা এটি দূর করবে)

  2. আরএসটিফুল এপিআই জিইটি কলগুলির জন্য ব্যবহৃত হয় যা সেশন ভিত্তিক নয় (যেমন প্রমাণীকরণের প্রয়োজন হয় না) যা ব্রাউজার ক্যাশে থেকে উপকৃত হয়। এর একটি ভাল উদাহরণ হ'ল ওয়েব অ্যাপ্লিকেশন দ্বারা ব্যবহৃত ড্রপ ডাউনগুলির জন্য রেফারেন্স ডেটা। যাহোক. এর চেয়ে একটু বেশি পরিবর্তন হতে পারে ...

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

  4. ডাব্লুএসডিএল ব্যবহার করে ওয়েব পরিষেবাদি এখনও এন্টারপ্রাইজ স্তর এবং ক্রস-এন্টারপ্রাইজ যোগাযোগের সর্বোত্তম উপায় কারণ এটি বার্তা এবং ডেটা পাস করার জন্য একটি সংজ্ঞায়িত মান সরবরাহ করে। প্রাথমিকভাবে আপনি এটি আপনার ওয়েব পরিষেবা হ্যান্ডলারের প্রক্সিতে একটি ডেটাপাওয়ার ডিভাইসে অফলোড করবেন।

এইগুলি এইচটিটিপি প্রোটোকলে ঘটে যা ইতিমধ্যে এসএসএল এর মাধ্যমে সুরক্ষিত সকেটগুলি ব্যবহার করে।

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

আরআরএসটি বনাম ওয়েবসকেট ব্যবহার করার সময় আরও একটি বিষয় লক্ষ্য রাখতে হবে যা স্কেলাবিলিটি । ওয়েবস্কট সেশনগুলি এখনও সার্ভার দ্বারা পরিচালিত হয়। যথাযথভাবে সম্পন্ন হওয়ার পরে RESTful এপিআই হ'ল স্টেটলেস (যার অর্থ এমন কোনও সার্ভারের অবস্থা নেই যা পরিচালিত হওয়া দরকার), সুতরাং স্কেলাবিলিটি উল্লম্বভাবে তুলনায় অনুভূমিকভাবে বৃদ্ধি পেতে পারে (যা সস্তা)


2

আমি কি সার্ভার থেকে আপডেট চাই?

  • হ্যাঁ: সকেট.আইও
  • বিশ্রামহীন

সকেট.ইও-র ডাউনসাইডগুলি হ'ল:

  • স্কেলিবিলিটি: ওয়েবস্কেলের জন্য ওপেন সংযোগ এবং ওয়েব স্কেলে অনেকগুলি অপস সেটআপ প্রয়োজন।
  • শিখুন: আমার শেখার জন্য আমার সীমাহীন সময় নেই। কাজ শেষ করতে হবে!

আমি এখনও আমার প্রকল্পে সকেট.আইও ব্যবহার করব, তবে বেসিক ওয়েব ফর্মগুলির জন্য নয় যা বাকিগুলি সুন্দরভাবে করবে।


1

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

আরআরইএসটি হ'ল রিসোর্স ভিত্তিক আর্কিটেকচার যা ভালভাবে বোঝা যায় এবং এটি অন্যান্য আর্কিটেকচারের তুলনায় এর নিজস্ব বেনিফিট সরবরাহ করে। ওয়েবসকেটগুলি রিয়েল-টাইমে ডেটাগুলির স্ট্রিম / ফিডগুলিতে আরও ঝুঁকছে যার জন্য আপনাকে সংস্থান এবং ফিডগুলির মধ্যে অগ্রাধিকার দিতে বা পৃথক করতে (যদি আপনি আরআরএসটি ব্যবহার করতে চান না) তবে আপনাকে কোনও ধরণের সার্ভার ভিত্তিক যুক্তি তৈরি করতে হবে।

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


-1

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


হ্যাঁ বেশিরভাগ ওয়েবসার্ভ HTTP এ এক্সেল করে। তবে নোড.জেএস কোনও ওয়েব সার্ভার নয়, এটি একটি আইও লাইব্রেরি। এটি টিসিপি ঠিকঠাক করতে পারে। প্রশ্নটি মূলত বলছে যে আমরা এইচটিটিপি-র পরিবর্তে টিসিপি ব্যবহারের জন্য ওয়েবসাইটগুলি ডিজাইন করতে পারি?
রায়নস

একই বিধিনিষেধগুলি প্রযোজ্য, আপনি তখনও ক্ষণিকের বন্দর / মেমরির বাইরে চলে যাবেন, এটি এখনও আপনি একসাথে কত লোককে পরিবেশন করতে পারবেন তা সীমাবদ্ধ করে দেবে এবং সিস্টেমে অপ্রয়োজনীয় বোঝা চাপবে।
zeekay

হ্যাঁ একটি সীমা আছে তবে আমি মনে করি না যে আপনি সংযোগ প্রতি নতুন থ্রেড তৈরি না করলে এটি এত বড় চুক্তি।
রায়নস

আমি ইতিমধ্যে প্রতিটি ব্যবহারকারীর জন্য একটি সকেট আছে। বিশ্বব্যাপী চ্যাট + নিউজফিড।
হ্যারি

1
আমার ধারণা ২০১১ সালে এটি একটি দুর্দান্ত আনসার ছিল। - তো, আমি দেখছি আপনি কোথা থেকে এসেছেন। তবে 2019 সালে, ওয়েবসকেটগুলি পরিপক্ক হয়েছে।
বিভিডিবি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.