اطلاعیه

کاربر گرامی

به انجمن برنامه نویسی AnswerCenter.ir خوش آمدید

 برای استفاده از تمامی امکانات سایت لطفا در انجمن عضو شوید


امین مهدی نژاد

کتابخانه irSocket.io

18 ارسال در این موضوع قرار دارد

Socket.IO یک کتابخانه قدرتمند برای وب اپیلیکیشن‌ها است که یک ارتباط بلادرنگ و دوجهته بین کلاینت و سرور برقرار می‌کند و دارای دو قسمت است. یکی کتابخانه سمت کلاینت که در مرورگر اجرا می‌شود و یک کتابخانه سمت سرور بر پایه Node.JS.
Socket.IO در اصل یک رابط برای پروتکل WebSocket است نه یک کتابخانه برای آن؛ در اصل یک پرتوکل انتقال سفارشی شده روی پروتکل‌های بلادرنگ دیگر است که یکسری قابلیت‌های بیشتر از قبیل ارسال پخشی به چندین سوکت، ذخیره داده‌های هر کلاینت و ارتباط نامتقارن را فراهم کرده است.

یک مثال ساده بزنم که بهتر متوجه بشید. همتون تلگرام یا واتساپ و ... رو دیدین. یعنی به محض اینکه کاری انجام می‌دیم یا پیامی رو می‌فرستیم، سریع به دست گیرنده می‌رسه و سریع جوابش میاد که گیرنده پیام شما رو خونده. یعنی سرعت ارسال و دریافت اطلاعات بسیار بالا هست و بهش میگیم ارتباط بلادرنگ یا Realtime (زنده)

وقتی از Socket به جای ارتباطات HTTP استفاده کنیم، هم سرعت کار و کیفیت کار بالاتر میره و هم فشار کمتری به سرور میاد. پس به جای اینکه چندین سرور قوی داشته باشیم و هزینه‌های زیادی بدیم، هم هزینه‌ها میاد پایین و هم نیازی به چند سرور قوی نیست و با سرورهای بسیار کمتری هم کار ما انجام میشه.
منبع

مثال

در این دوره یاد می گیرید چگونه یک اپلیکیشن قدرتمند و داینامیک ایجاد نمایید . اگر شما قصد دارید که یک چیزی بسازید که بلادرنگ باشد Learning Path به شما کمک خواهد کرد . در این دوره شما می آموزید چگونه اپلیکیشن های بلادرنگ توسط Socket.IOExpress Redis ایجاد نمایید . Socket.IO به شما در آمار های بلادرنگ – سیستم چت و ارتباط دو طرفه بین مرورگر و سرور کمک می کند . Redis درهایی را برای ذخیره سازی اطلاعات و دسترسی فوق سریع را برای شما باز می کند . و در آخر  Express که به شما در ساخت یک اپلیکیشن با امکانات کامل کمک می کند . یک ترکیب قدرتمند از این سه مهم اپلیکیشن شما را خوفناک می کند و شما قادر خواهید بود تا اپلیکیشن خود را به سرعت , با مقیاس بالاتر و کاملا بلادرنگ ایجاد نمایید .

لینک

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام ، خسته نباشید.

 

برای اندروید استودیو هست یا بیسیک؟

این کتابخونه مخصوص بیسیک می باشد.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام.

 

در آینده احتمال این هست که برای اندروید استودیو معرفی کنین؟

بی صبرانه منتظرم...

 

 

ممنون...

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سعی می کنم آموزش هاش رو طوری تهیه کنم که هم در بیسیک استفاده بشه و هم  در جاوا .

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

ساخت سرویس چت در بیسیک فور اندروید

این سرویس برای دریافت و مدیریت رویدادهای لازم برای چت روم می باشد.

ابتدا متغیر سوکت رو به صورت عمومی می سازیم

Sub Process_Globals
	Dim ir As irSocketIO
End Sub

اکنون سوکت را با آدرس و پورت سرور وصل می کنیم

	ir.getSocket("http://192.168.1.101:3000")

حالا باید رویدادهایی برای وقایع مناسب تهیه کنیم.

مثلا رویدادهای

  • اتصال به سرور
  • لاگین شدن به سرور
  • اتصال کاربر جدید
  • خروج کاربر
  • دریافت پیام
  • کاربر در حال نوشتن
  • لغو در حال نوشتن

کد زیر نمونه ای از این وقایع می باشد

	ir.On(ir.EVENT_CONNECT)
	ir.On("login")
	ir.On("new_message")
	ir.On("user_joined")
	ir.On("user_left")
	ir.On("typing")
	ir.On("stop_typing")

هر یک از رویدادهای بالا در زمان وقوع سابی که هم نام خودشان باشد را اجرا می کنند یعنی این ساب ها را باید بسازیم

Sub connect(obj As Object)
	Log("connect")
End Sub
Sub login(obj As Object)
	Log("login")
End Sub
Sub stop_typing(data As Object)
	Log("stop_typing")
End Sub
Sub new_message(data As Object)
	Log("new_message")
End Sub
Sub user_joined(data As Object)
	Log("user_joined")
End Sub
Sub user_left(data As Object)
	Log("user_left")
End Sub
Sub typing(data As Object)
	Log("typing")
End Sub

 

و اکنون ارتباط سرور را شروع می کنیم

	ir.connect

می توانید در رویداد اتصال بلافاصله لاگین را انجام بدهیم

ir.emit("add_user", "amin")

و یا پیام های دریافتی را به یک اکتیویتی ارسال کنیم تا نمایش داده شوند

Sub new_message(data As Object)
	CallSubDelayed2(Chat,"new_message",data)
End Sub

در اکتیویتی chat و  به ساب new_message مقادیر ارسال می شوند.

در هنگام نیاز می توانید رویداد های غیر لازم را غیر فعال نمایید.

	ir.Off("typing")

خب در نهایت ممکن است چنین کدی داشته باشیم

Sub Process_Globals
	Dim ir As irSocketIO
End Sub

Sub Service_Create

End Sub

Sub Service_Start (StartingIntent As Intent)
	ir.getSocket("http://192.168.1.101:3000")
	ir.On(ir.EVENT_CONNECT)
	ir.On("login")
	ir.On("new_message")
	ir.On("user_joined")
	ir.On("user_left")
	ir.On("typing")
	ir.On("stop_typing")
	ir.connect
End Sub

Sub Service_Destroy

End Sub
Sub connect(obj As Object)
	Log("connect")
	ir.emit("add_user", "amin"&DateTime.Now)
End Sub
Sub login(obj As Object)
	Log("login")
End Sub
Sub stop_typing(data As Object)
	Log("stop_typing")
End Sub
Sub new_message(data As Object)
	CallSubDelayed2(Chat,"new_message",data)
End Sub
Sub user_joined(data As Object)
	Log("user_joined")
End Sub
Sub user_left(data As Object)
	Log("user_left")
End Sub
Sub typing(data As Object)
	Log("typing")
End Sub

«موفق باشید.»

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام

ممنون از شما

http://192.168.1.101:3000

در مورد این آدرس توضیح بیشتری میدید

اگر دارای هاست و دامنه باشیم  و بخواهیم استفاده کنیم ///اون شماره پورت چی میدیم

ممنون اینو توضیح بیشتری بدید////

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در در 1397/04/02, 19:51:07، shahrokhnazari گفته است :

سلام

ممنون از شما


http://192.168.1.101:3000

در مورد این آدرس توضیح بیشتری میدید

اگر دارای هاست و دامنه باشیم  و بخواهیم استفاده کنیم ///اون شماره پورت چی میدیم

ممنون اینو توضیح بیشتری بدید////

 

باید از سمت سرور اونو مشخص کنید. مثلا در سورس زیر دقت کنید.

// Setup basic express server
var express = require('express');
var app = express();
var path = require('path');
var server = require('http').createServer(app);
var io = require('../..')(server);
var port = process.env.PORT || 3000;

server.listen(port, () => {
  console.log('Server listening at port %d', port);
});

// Routing
app.use(express.static(path.join(__dirname, 'public')));

// Chatroom

var numUsers = 0;

io.on('connection', (socket) => {
  var addedUser = false;

  // when the client emits 'new message', this listens and executes
  socket.on('new_message', (data) => {
    // we tell the client to execute 'new message'
    socket.broadcast.emit('new_message', {
      username: socket.username,
      message: data
    });
  });

  // when the client emits 'add user', this listens and executes
  socket.on('add_user', (username) => {
    if (addedUser) return;

    // we store the username in the socket session for this client
    socket.username = username;
    ++numUsers;
    addedUser = true;
    socket.emit('login', {
      numUsers: numUsers
    });
    // echo globally (all clients) that a person has connected
    socket.broadcast.emit('user_joined', {
      username: socket.username,
      numUsers: numUsers
    });
  });

  // when the client emits 'typing', we broadcast it to others
  socket.on('typing', () => {
    socket.broadcast.emit('typing', {
      username: socket.username
    });
  });

  // when the client emits 'stop typing', we broadcast it to others
  socket.on('stop_typing', () => {
    socket.broadcast.emit('stop_typing', {
      username: socket.username
    });
  });

  // when the user disconnects.. perform this
  socket.on('disconnect', () => {
    if (addedUser) {
      --numUsers;

      // echo globally that this client has left
      socket.broadcast.emit('user_left', {
        username: socket.username,
        numUsers: numUsers
      });
    }
  });
});

این کد Node.js مناسب و هماهنگ برای سرویس موجود در بیسیک می باشد.

همانطور که میبینید رویداد ها رو همانند نسخه بیسیک با On معرفی کرده اند

پورت رو هم  3000 قرار داده شده است.

منبع

«موفق باشید.»

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در در 1397/04/02, 19:51:07، shahrokhnazari گفته است :

سلام

ممنون از شما


http://192.168.1.101:3000

در مورد این آدرس توضیح بیشتری میدید

اگر دارای هاست و دامنه باشیم  و بخواهیم استفاده کنیم ///اون شماره پورت چی میدیم

ممنون اینو توضیح بیشتری بدید////

 

سلام

محدوده پورتی بین 1024 و 65535 انتخاب می کنید.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در در 1397/03/30, 16:29:15، امین مهدی نژاد گفته است :

سعی می کنم آموزش هاش رو طوری تهیه کنم که هم در بیسیک استفاده بشه و هم  در جاوا .

سلام استاد

جسارتا بنده سعی دارم به یک سرور node.js متصل بشم که برای یک کار خاص طراحی شده ...

چطور و با چه کتابخونه ای میتونم بهش متصل بشم و دیتا رد و بدل کنم ؟

برای socket سی شارپ و ارتباط tcp سورس دیدم. اما برای ارتباط با نود و socket.io چیزی ندیدم !

متشکرم

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

فعلا تنها کتابخونه ای که در انجمن برای اینکار وجود داره همین کتابخونه است. کار کردن لاهاش هم زیاد سخت نیست سعی کنید مثالش رو اجرا کنید تا کار دستتون بیاد

اگه سوال یا مشکلی دارید با جزئیات بیان کنید تا در صورت توان راهنمایی کنم.

«موفق باشید.»

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 6 ساعت قبل، امین مهدی نژاد گفته است :

فعلا تنها کتابخونه ای که در انجمن برای اینکار وجود داره همین کتابخونه است. کار کردن لاهاش هم زیاد سخت نیست سعی کنید مثالش رو اجرا کنید تا کار دستتون بیاد

اگه سوال یا مشکلی دارید با جزئیات بیان کنید تا در صورت توان راهنمایی کنم.

«موفق باشید.»

سلام

لینک دانلود فایل های کتابخانه رو ندیدم !

راهنمایی میکنید ؟

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 10 ساعت قبل، fun_code گفته است :

سلام

لینک دانلود فایل های کتابخانه رو ندیدم !

راهنمایی میکنید ؟

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در در 1397/04/02, 12:41:48، امین مهدی نژاد گفته است :

خب در نهایت ممکن است چنین کدی داشته باشیم

سلام

بنده علنا کد شما رو در سرویس starter کپی کردم.

آدرس رو تغییر دادم ، اما اتصال صورت نمیگیره و رویداد connect اجرا نمیشه !

ممکنه راهنماییم کنید ؟

(این در حالی است که با کتابخانه سوکت به آدرس متصل میشم ، فقط چون سرور node.js هست نمیشه باهاش ارتباط برقرار کرد.)

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

فهمیدم ، دسترسی به اینترنت رو اضافه نکرده بودم.

چون اروری نمیداد متوجه نشدم.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

فقط ممنون میشم بفرمایید پاسخ چه پیام هایی به رویداد new_message وارد میشه ؟

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 15 ساعت قبل، fun_code گفته است :

فقط ممنون میشم بفرمایید پاسخ چه پیام هایی به رویداد new_message وارد میشه ؟

 // when the client emits 'new message', this listens and executes
  socket.on('new_message', (data) => {
    // we tell the client to execute 'new message'
    socket.broadcast.emit('new_message', {
      username: socket.username,
      message: data
    });
  });

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام میشه لطف کنید یه ذره توضیح سطح پایین هم بدید؟

من یه اپ ساختم و یه چت روم داخلش قرار دادم مشکلم این بود که وقتی پیامی فرستاده میشد باید توسط بقیه کاربرا حتما باتن بروزرسانی زده میشد تا پیام نمایش داده بشه.

دنبال راهی بودم که عمل بروز رسانی زمانی پیامی توی دیتابیس نشست انجام بشه برای همه کاربرا که به این مطلب رسیدم .

میشه لطف کنید بگید باید چکار کنم ؟؟؟؟

کلا باید سورس خودمو بیخیال بشم (که سمت سرور با php نوشته شده ) یا اینکه نه در کنار اون سورس باید از این کدها استفاده بشه ؟؟؟

اگه باید درکنار کد خودم این کد ها رو قرار بدم چطوری میتونم اینکارو بکنم چون تا بحال از nod.js استفاده نکردم و نمیشناسمش.

و در اخر باتشکر از اینکه این کتابخونه رو رایگان قراردادید.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 11 دقیقه قبل، mja89 گفته است :

سلام میشه لطف کنید یه ذره توضیح سطح پایین هم بدید؟

من یه اپ ساختم و یه چت روم داخلش قرار دادم مشکلم این بود که وقتی پیامی فرستاده میشد باید توسط بقیه کاربرا حتما باتن بروزرسانی زده میشد تا پیام نمایش داده بشه.

دنبال راهی بودم که عمل بروز رسانی زمانی پیامی توی دیتابیس نشست انجام بشه برای همه کاربرا که به این مطلب رسیدم .

میشه لطف کنید بگید باید چکار کنم ؟؟؟؟

کلا باید سورس خودمو بیخیال بشم (که سمت سرور با php نوشته شده ) یا اینکه نه در کنار اون سورس باید از این کدها استفاده بشه ؟؟؟

اگه باید درکنار کد خودم این کد ها رو قرار بدم چطوری میتونم اینکارو بکنم چون تا بحال از nod.js استفاده نکردم و نمیشناسمش.

و در اخر باتشکر از اینکه این کتابخونه رو رایگان قراردادید.

ترکیب php و node.js زیاد چیز جالبی از کار در نمیاد.

نود گزینه مناسب و کاملی برای ساخت سرویس های بلادرنگ است.

اگر سورس php رو زیاد پیش نرفتید اونو بی خیال بشید.

البته با php هم میشه سوکت نویسی کرد ولی node.js  استاندارد تر و برای اینکار مناسب تره.

اگه با نود کار رو شروع کردی یه پیام با تلگرام برام بفرست.

«موفق باشید.»

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری