সকেট.আইওরুমে বা নেমস্পেসিং?


163

আমি রিয়েল টাইম চ্যাটের জন্য নোডেজ / সকেট.আইও তদন্ত করছি, এবং রুমগুলি বাস্তবায়নের জন্য আমার কিছু পরামর্শ দরকার।

একে অপরের থেকে বকশির ফসল সম্পূর্ণরূপে বিচ্ছিন্ন করার জন্য নেমস্পেস ব্যবহার করে বা ঘরের বৈশিষ্ট্যটি ব্যবহার করে কোনটি ভাল?

ঘর এবং নেমস্পেসের মধ্যে প্রকৃত প্রযুক্তিগত পার্থক্য কী?

কোন রিসোর্স ব্যবহারের পার্থক্য আছে?

উত্তর:


216

নেমস্পেস এবং ঘরগুলি একই রকম (সকেট.আইও ভি0.৯.৮ - দয়া করে মনে রাখবেন যে ভি ১.০ একটি সম্পূর্ণ পুনর্লিখনের সাথে জড়িত, সুতরাং জিনিসগুলি পরিবর্তিত হতে পারে):

  • উভয় নেমস্পেস ( io.of ('/ nsp') ) এবং কক্ষগুলি ( সকেট.জোঁইন ('রুম') ) সার্ভারের পাশে তৈরি করা হয়েছে
  • একাধিক নেমস্পেস এবং একাধিক কক্ষ একই (ওয়েবসকেট) সংযোগ ভাগ করে
  • সার্ভার কেবল সেই সমস্ত ক্লায়েন্টদের কাছে কেবল তার ক্লাসে বার্তা প্রেরণ করবে যা কোনও এনএসপি / রুমে সংযুক্ত / যোগদান করেছে, অর্থাত্ এটি কেবল ক্লায়েন্ট-সাইড ফিল্টারিং নয়

পার্থক্য :

  • নেমস্পেসগুলি ক্লায়েন্টের সাথে ব্যবহার করে এর সাথে সংযুক্ত থাকেio.connect(urlAndNsp) (ক্লায়েন্টটি কেবলমাত্র সার্ভারে উপস্থিত থাকলেই সেই নামস্থানে যুক্ত হবে)
  • কক্ষগুলি কেবল সার্ভার সাইডে যোগ দেওয়া যায় (যদিও ক্লায়েন্টদের যোগদানের জন্য সার্ভার সাইডে একটি API তৈরি করা সহজবোধ্য)
  • নেমস্পেসগুলি অনুমোদন সুরক্ষিত হতে পারে
  • কক্ষগুলির সাথে অনুমোদন পাওয়া যায় না , তবে কাস্টম অনুমোদনের বিষয়টি সার্ভারে পূর্বোক্ত, সহজে তৈরি করা এপিআইতে যুক্ত করা যেতে পারে, যদি কেউ ঘর ব্যবহারে ঝুঁকে থাকে
  • কক্ষগুলি একটি নেমস্পেসের অংশ ('গ্লোবাল' নেমস্পেসের ডিফল্ট)
  • নেমস্পেসগুলি সর্বদা বিশ্বব্যাপী স্কোপগুলিতে থাকে

নামের (ঘর বা নেমস্পেস) দিয়ে ধারণাটি বিভ্রান্ত না করার জন্য, আমি ধারণাটি উল্লেখ করার জন্য বগি এবং ধারণার বাস্তবায়নের জন্য অন্য দুটি নাম ব্যবহার করব । তাই যদি আপনি

  • প্রয়োজন প্রতি কুঠরি অনুমোদন , নামব্যবধান নিতে সবচেয়ে সহজ পদ্ধিতি হল রুট হতে পারে
  • যদি আপনি স্তরক্রমিকভাবে স্তরযুক্ত বিভাগগুলি (2 স্তর সর্বাধিক 2) চান তবে একটি নেমস্পেস / রুম কম্বো ব্যবহার করুন
  • যদি আপনার ক্লায়েন্ট-সাইড অ্যাপ্লিকেশনটিতে বিভিন্ন অংশ থাকে যা (নিজেরাই বগিগুলির বিষয়ে চিন্তা করে না তবে) একে অপরের থেকে পৃথক হওয়া দরকার, নামস্থান ব্যবহার করুন।

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

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

এটি আপনার প্রশ্নের উত্তর দেয় কিনা তা নিশ্চিত না, তবে এই উত্তরটি নিয়ে আসা গবেষণা কমপক্ষে আমাকে আরও পরিষ্কার হতে সহায়তা করেছে।


5
সকেট.ইও সংস্করণ> = 1.0 এর পরে কি আরও বড় কিছু পরিবর্তিত হয়েছে?
জেরক্সয়েড

2
শেষ সংস্করণ পরিবর্তন পড়তে socket.io/docs/rooms-and-namespaces এবং এই উত্তর কক্ষ জিনিস বুঝতে উপযোগী হতে পারে stackoverflow.com/questions/24041220/...
গনসালো Bahamondez

1
আমরা কী বলতে পারি যে নেমস্পেসটি আমার ওয়েব অ্যাপ্লিকেশনের একটি নির্দিষ্ট ক্ষেত্র এবং সেই অঞ্চলে ক্লায়েন্টের একটি গ্রুপ রয়েছে?
ওনাইগগাক

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

67

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


3
পছন্দ করি! নেমস্পেসস - পূর্বনির্ধারিত সংযোগগুলি। রুম - গতিশীল সংযোগগুলি
নন্দকুমার

16

এটি নির্ভর করে আপনি কী করতে চান।

মূল পার্থক্য হ'ল ঘরগুলি কার্যকর করা শক্ত। প্রতিটি পৃষ্ঠা পুনরায় লোড সহ কক্ষে যোগদানের জন্য আপনাকে অবশ্যই একটি পদ্ধতি তৈরি করতে হবে।

নেমস্পেসগুলির সাথে var example = io.connect('http://localhost/example');আপনার জাভাস্ক্রিপ্ট ক্লায়েন্টে লিখতে হবে এবং ক্লায়েন্টটি স্বয়ংক্রিয়ভাবে নেমস্পেসে যুক্ত হবে।

ব্যবহারের উদাহরণ:

  • রুম: ব্যক্তিগত চ্যাট।
  • নেমস্পেস: পৃষ্ঠার চ্যাট।

2

রুম এবং নেমস্পেসস সেগমেন্ট যোগাযোগ এবং গ্রুপ স্বতন্ত্র সকেট।

একটি কক্ষে বা একটি নেমস্পেসে সম্প্রচার কেবল সদস্যদের কাছে পৌঁছাবে না।

নেমস্পেস এবং কক্ষগুলির মধ্যে পার্থক্যটি নিম্নলিখিত:

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

পার্থক্যটি হ'ল মূলত সেগুলি কে পরিচালনা করে

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


0

নেমস্পেসগুলি আপনাকে একই নামের সাথে অবজেক্ট তৈরি করতে দেয় তবে তারা পৃথক পৃথক নেমস্পেসে থাকতে পারে, অন্যথায় স্কোপ হিসাবে পরিচিত।

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

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

নেমস্পেসগুলি আমাদের বিভিন্ন প্রসঙ্গে সংযোগ তৈরি করার অনুমতি দেয়। আমরা এটির সাথে কক্ষগুলির তুলনা করতে পারি, যা আমাদের একসাথে সংযোগ স্থাপনের অনুমতি দেয় then আমাদের অন্য সংযোগগুলিতেও একই সংযোগ থাকতে পারে।

নেমস্পেসগুলি আপনাকে সকেটের জন্য বিভিন্ন প্রসঙ্গ তৈরি করতে অনুমতি দেয় Iআইও কাজ করার জন্য Ro

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