سلام، یک سوال داشتم، این Socket.io چی هست که اینقدر ازش تعریف می کنن؟
سلام، یک سوال داشتم، این Socket.io چی هست که اینقدر ازش تعریف می کنن؟
Socket.IO یک کتابخانه جاوا اسکریپت برای وب اپیلیکیشن ها است که یک ارتباط بلادرنگ و دوجهته بین کلاینت و سرور برقرار می کند و دارای دو قسمت یکی کتابخانه سمت کلاینت که در مرورگر اجرا می شه و یک کتابخانه سمت سرور بر پایه node.js است که دارای یک API برای ارتباط با یکدیگر هستند .
Socket.IO در اصل یک رابط برای پروتکل WebSocket است نه یک کتابخانه برای آن در اصل یک پرتوکل انتقال سفارشی شده روی پروتکل های بلادرنگ دیگر است که یکسری قابلیت های بیشتر از قبیل ارسال پخشی به چندین سوکت , ذخیره داده ها ی هر کلاینت و ارتباط نامتقارن را فراهم کرده است .
برگرفته از ویکی پدیا
socket.io کتابخانه ای هستش که باهاش میتونید negotiation رو به صورت لایو برقرار کنید. مثلا فیسبوک رو دیدید که بدون اینکه رفرش کنید براتون پیام میاد یا داخل توییتر توییت جدید زده میشه بدون اینکه شما رفرش کنید به صفحتون اضافه میشه.
Socket.io معمولا به همراه nodejs استفاده میشه که هم سمت سرور کار می کنه هم سمت کلاینت. امروزه تقریبا 99 درصد بازی های آنلاین از Socket.io استفاده می کنند مثل بازی شطرنج آنلاین که حریف حرکت می کنه برای شما حرکتش میاد و ...
Socket.io در کنار nodejs و flux جعبه ابزاری بسیار قدرتمند و آسان محسوب میشود.
موفق باشید.
ما میخوایم وقتی کاربر Y وارد سیستم شد، کاربر X خبر دار بشه.
تو حالت عادی:
- وقتی کاربر Y وارد شد، به سرور خبر میده که من اومدم!
- کاربر X هر چند ثانیه از سرور میپرسه که کاربر Y اومده یا نه؟
- اگه کاربر Y وارد شده بود، سرور بهش جواب مثبت میده.
این روش بدیش اینه که هم به سرور فشار میاد که هر چند ثانیه بخواد بیاد چک کنه ببینه چی شده چی نشده، هم به خود کاربر X که بدبخت باید هی از سرور بپرسه
ولی خوبیش اینه که امکانات زیادی نمیخواد و هزینه کمتری داره
ولی با socket.io این کار اینطوری انجام میشه:
- وقتی کاربر Y وارد شد، به سرور خبر میده که من اومدم!
- سرور وقتی فهمید که کاربر Y اومده، به کاربر X خبر میده!
توی این روش، کاربر X فقط منتظر میشینه تا سرور بهش خبر بده و هیچ کاری انجام نمیده. سرور هم فقط منتظره تا یه اتفاقی بی افته و عکسالعمل انجام بده.
می شه توضیح بدید که روش socket.io چه امکاناتی می خواد و چه هزینه هایی داره؟خوبیش اینه که امکانات زیادی نمیخواد و هزینه کمتری داره
اگه سرور اختصاصی داشته باشیم خودمون که خب هزینه ای نداره. ترمینال رو باز میکنیم، نودجیاس رو دانلود و نصب میکنیم و بعدش ماژول سوکتآیاو رو فعال میکنیم. اما داشتن سرور اختصاصی، پول و رسیدگی و نگهداری و پشتیبانی و ... لازم داره.
اما یه جاهایی هستن که هاست میفروشن. به این صورت که اون سرور فیزیکی رو خودشون نگهداری میکنن و کار پشتیبانیش رو انجام میدن، و در قبال پولی که از شما میگیرن، یه فضایی رو از روی اون سرور در اختیار شما قرار میدن.
اینها بر اساس حجمی که به شما اختصاص میدن و امکاناتی که در اختیارتون قرار میدن، پول میگیرن، با این حال اون سرور هنوز برای اونهاست.
مشخصه که توی یه هاستی که از اونجا خریدید، شما دسترسی به ترمینال ندارید که هر کاری دلتون خواست بکنید. در عوض میتونید با پرداخت هزینهاش، از مدیر اون سرور بخواید که اون کار رو واستون انجام بده.
آیا Node روی سرور ویندوز و لینوکس هر دو قابل اجرا هست؟
اگر بله ترمینال داخل ویندوز چطوری صدا زنده می شه. آیا منظور از ترمینال همان صفحه مشکی رنگی است که به شکل DOS هست و با اجرای node.exe باز می شه؟
مرسی
بله.
منوی استارت رو بزنید و تایپ کنید cmd و اینتر رو بزنید. شما الان کامندلاین رو اجرا کردین.
حالا درصورتی که نودجیاس روی سیستمتون نصب باشه و اسکریپتی که نوشتید توی درایو C و با نام index.js باشه، میتونید با دستور زیر اون رو اجرا کنید.
node C:\index.js
ترمینال (در لینوکس) یا کامند لاین (در ویندوز) یه کار مشابهی رو انجام میدن. اما اون node.exe که میگید، در واقع همون کامندلاین ویندوز هستش که واسه اجرای دستورات نودجیاس بهینه شده.
nodejs + express js + bower + ejs + gulp + socket.io
من از این ها استفاده می کنم، شما هم می توانید به راحتی از قدرت اکسپرس و سادگی ejs بهره بگیرید، کافیست که مفهوم رو درک کنید اونوقت استفاده بسیار آسان هست در غیر این صورت خیر.
موفق باشید.
من تعریف Node.js رو زیاد شنیدم و اینکه فیسبوک ازش استفاده میکنه و توی Chess.com هم دیدم که با سرعت بالا حرکت های هر کلاینت دریافت میشه که بعید میدونم با Jquery بشه با اون سرعت انتقال داد اما سوالم اینه که مگه نمیگیم همیشه درخواست از سمت کلاینت هست پس تو این حالتی که شما میگید عملا سرور چطور دیتای خودشو به کاربر X تحویل میده وقتی کاربر X کلاینت هست و هیچ درخواستی رو از سرور نکرده ؟؟
تو حالت عادی تو پروتکل HTTP ارتباط به این شکل هست:
کلاینت به سرور متصل میشه درخواست رو ارسال میکنه سرور جواب میده بعد اتصال بسته میشه.
تو Node.js به این شکل هست:
کلاینت به سرور متصل میشه درخواست ارسال میشه و سرور جواب میده اما ارتباط بسته نمیشه و تا زمانی که ارتباط از طرف کلاینت یا سرور بسته نشه ارتباطشون حفظ میشه هم کلاینت و هم سرور میتونن تعداد بی نهیات درخواست و پاسخ رو به هم ارسال کنند