সকেট এবং ওয়েবসকেটের মধ্যে পার্থক্য?


178

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

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

তাই:

  • এগুলি কি আসলেই আলাদা?
  • বাইরের সার্ভারের সাথে সকেট সংযোগ স্থাপনের উপর নির্ভর করে এমন কোনও প্রকল্পের জন্য জাঙ্গো ব্যবহার না করার কোনও কারণ আছে কি?

উত্তর:


141

আপনার প্রশ্নের উত্তর দিতে।

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

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

14
ঠিক আছে. আমি দেখছি ... যেহেতু আমি এই গৃহীত উত্তরটি মুছতে পারি না, তাই আমি দয়া করে আপনাকে সঠিক তথ্য দিয়ে এটি সম্পাদনা করতে বলব। ধন্যবাদ!
পাবলো সান্তা ক্রুজ

2
আপনি ওয়েবসকেট ক্লায়েন্ট তৈরি করতে এবং ব্রাউজারগুলির বাইরে ব্যবহার করতে পারেন। ওয়েবসকেট প্রোটোকলটি "ওয়েবসকেট" -এ আপগ্রেড হওয়া সংযোগ সহ HTTP 1.1।
রজার এফ গে।

2
@ হুগি না ফ্রেমিংয়ের একটি সামান্য বিট রয়েছে: সরঞ্জাম. ietf.org/html/rfc6455#section-5 (ছোট বার্তাগুলির জন্য 2 বাইট)।
কানাকা

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

21

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

আমি এমন একটি কাঠামো তৈরি করছি যা আপনাকে ইনস্টল করা সফ্টওয়্যার দিয়ে মেশিনে সরাসরি মেশিনে যোগাযোগ করতে দেয় allow এটি আপনার উদ্দেশ্য অনুসারে হতে পারে। আপনি যদি চান তবে আমার ব্লগটি অনুসরণ করতে পারেন: http://highlevellogic.blogspot.com/2011/09/websket-server-demonstration_26.html


11

আপনাকে ওয়েবসকেট (বা কিছু অনুরূপ প্রোটোকল মডিউল যেমন ফ্ল্যাশ প্লাগইন দ্বারা সমর্থিত) ব্যবহার করতে হবে কারণ একটি সাধারণ ব্রাউজার অ্যাপ্লিকেশন কেবল খাঁটি টিসিপি সকেট খুলতে পারে না।

এর Socket.IOজন্য উপলব্ধ মডিউলটি node.jsঅনেক সাহায্য করতে পারে তবে মনে রাখবেন যে এটি নিজের হাতে খাঁটি ওয়েবস্কট মডিউল নয়

এটি আসলে আরও জেনেরিক যোগাযোগ মডিউল যা ওয়েবসকেট এবং ফ্ল্যাশ সকেট সহ অন্যান্য বিভিন্ন নেটওয়ার্ক প্রোটোকলের শীর্ষে চলতে পারে ।

সুতরাং আপনি যদি Socket.IOসার্ভারের শেষে ব্যবহার করতে চান তবে আপনাকে অবশ্যই তাদের ক্লায়েন্ট কোড এবং অবজেক্টগুলি ব্যবহার করতে হবে। আপনি WebSocketকোনও socket.ioসার্ভারের সাথে সহজেই কাঁচা সংযোগগুলি তৈরি করতে পারবেন না কারণ তাদের বার্তা প্রোটোকলটি অনুকরণ করতে হবে।


11

ওয়েবসকেট এইচটিটিপি-র মতো টিসিপি প্রোটোকলের উপরে কেবলমাত্র একটি অ্যাপ্লিকেশন স্তরের প্রোটোকল।

কিছু স্নিপেটগুলি <স্প্রিং ইন অ্যাকশন 4> নীচে উদ্ধৃত হয়েছে, আশা করি এটি আপনাকে ওয়েবস্কট আরও ভালভাবে বুঝতে সহায়তা করতে পারে।

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


2

আপনার প্রশ্ন (খ) সম্পর্কিত, সচেতন হন যে ওয়েবসকেট নির্দিষ্টকরণ চূড়ান্ত হয়নি। ডাব্লু 3 সি অনুসারে :

প্রয়োগকারীদের সচেতন হওয়া উচিত যে এই স্পেসিফিকেশনটি স্থিতিশীল নয়।

ব্যক্তিগতভাবে আমি ওয়েবসকেটকে বর্তমানে ব্যবহার করার মতো খুব রক্তক্ষরণ প্রান্ত হিসাবে বিবেচনা করি। যদিও আমি সম্ভবত এক বা এক বছরে তাদের দরকারী মনে করব।


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