اطلاعیه

کاربر گرامی

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

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


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

کتابخانه irSocket.io

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

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

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

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

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

 

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 20 ساعت قبل، 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 انتخاب می کنید.

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


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

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

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

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

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

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

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

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

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