اتصال ساده و ارسال پیام
در این مستند ما خواهیم دید که چگونه میتوانید در Unity به سرویس بلادرنگ بکتوری وصل شده، یا از آن قطع شوید و چگونه با ارسال پیام به کاربران دیگر یک چت ساده را شبیهسازی کنید.
پیشنیازها
- در صورتی که با سرویس بلادرنگ آشنایی ندارید، به معرفی سرویس بلادرنگ مراجعه کنید.
- در صورتی که هنوز با تنظیمات پنل سرویس بلادرنگ آشنا نشده اید، به تنظیمات پنل سرویس بلادرنگ مراجعه کنید.
- اگر هنوز SDK یونیتی را راهاندازی نکردهاید، به راهاندازی SDK یونیتی مراجعه کنید.
اتصال به سرویس بلادرنگ
اولین و سادهترین کاری که باید برای استفاده از سرویس بلادرنگ در اپلیکیشن خود انجام دهید، برقراری ارتباط با سرور است. برای این کار کافیست کد زیر را زمانی که میخواهید کاربر اپلیکیشن شما آنلاین شود، انجام دهید:
BacktoryClient.StartRealtimeService (new BacktoryConnectionStatusListener() {
OnOpen = () => {
Debug.Log("Realtime service started successfully!");
},
OnClose = () => {
Debug.Log("Realtime service stopped successfully!");
},
OnError = (errMessage) => {
Debug.Log("Start realtime error!" + errMessage);
}
});
توجه: پیش از آنکه بتوانید به سرویس بلادرنگ وصل شوید، حتما باید لاگین کرده باشید. در غیر اینصورت، با خطا مواجه خواهید شد.
در صورتی که عملیات اتصال موفقیتآمیز باشد، تابع OnOpen و در غیر اینصورت تابع OnError صدا زده میشود. این ارتباط تا زمانی که شما قطع ارتباط نکنید و یا مشکلی برای شبکه و اینترنت اپلیکیشن پیش نیاید، برقرار خواهد بود. دقت کنید که در مجموع شما حداکثر یک اتصال به بکتوری میتوانید داشته باشید و نیازی به اتصالات بیشتر وجود ندارد.
ارسال پیام به یک کاربر
بعد از اتصال به بکتوری، سادهترین نیازی که میتوانید برآورده کنید، ارسال پیام مستقیم به کاربران دیگر است. شما میتوانید حداکثر یک پیام ۸ کیلوبایتی برای یک کاربر دیگری ارسال کنید. برای اینکه بکتوری بفهمد مقصد پیام شما کدام کاربر است باید شناسه userId آن کاربر را بدانید. این شناسه میتواند از لیست دوستان شما از سرویس رایانش گرفته شود و یا شناسه کاربرانی که در رقابت آنلاین قبلی با هم بازی کردید و یا هر جای دیگری. با داشتن این شناسه به صورت زیر میتوانید درخواست چت را ارسال کنید:
// Create direct chat object
BacktoryChat.Direct directChat = new BacktoryChat.Direct ("<User-Id-Here>");
// Send message
directChat.SendMessage ("Hello ali, what are you doing?", (response) =>
{
// Check if message is sent to server successfully
if (response.Successful) {
Debug.Log("Message is sent to Ali");
} else {
Debug.Log("Failed to send message with error: " + response.Message);
}
});
بسیار مهم: شما وقتی پیامی برای کسی ارسال میکنید، علاوه بر اینکه پیام به کاربر مورد نظر شما میرسد، به تمامی گوشیها و وسایل شما (از جمله دستگاه فعلی) هم که همین حساب کاربری بر روی آنهاست نیز، خواهد رسید. برای مثال اگر دیده باشید، در اپلیکیشن Hangouts گوگل، وقتی شما به دوست خود پیامی از طریق وبسایت ارسال کنید، آن پیام در لحظه در گوشی شما نیز نمایش داده خواهد شد.
شنود پیامهای دریافتی (Listener)
در قسمت قبل، دیدیم که چگونه میتوانید به یک کاربر پیام ارسال کنید. در حالت برعکس، باید بتوانید به صورت زنده (بلادرنگ) پیامهایی که کاربران دیگر برای شما ارسال کردهاند را دریافت کنید. برای این کار، باید یک Listener به SDK بدهید که در مواقع مختلف توسط SDK فراخوانی میشود و شما را از دریافت پیامهای جدید خبردار میکند. این کار با کد زیر امکانپذیر است:
BacktoryChat.Direct.SetOnReceivingMessageListener (
(BacktoryDirectChatMessage message) =>
{
Debug.Log("New message from " + message.SenderUserId + ": " + message.Content);
});
قطع ارتباط
اتصال به بکتوری، به علت اینکه یک ارتباط همیشگی وجود دارد، منابع گوشی را مصرف میکند و از طرفی برای حفظ اتصال، مکانیزم heartbeat وجود دارد، یعنی هر از چندی SDK پیام خالی برای سرور ارسال میکند تا سرور بتواند وضعیت آنلاین بودن دستگاه را بفهمد. بنابر این وقتی به این اتصال احتیاجی ندارید، باید آن را قطع کنید. برای قطع ارتباط کد سادهای مانند حالت اتصال باید بنویسید:
BacktoryClient.StopRealtimeService ();
با صدا زدن این تابع، اتصال به سرویس بلادرنگ بکتوری قطع شده و تابع OnClose که پیش از این در هنگام برقرار اتصال آن را پیادهسازی کرده بودید، صدا زده میشود.
نکتهی مهم: در حال حاضر به دلیل محدودیت حافظه، سرویس بلادرنگ فقط چتهای تا حداکثر ۱ ماه قبل را نگه میدارد و چتهای قدیمیتر را بازیابی نمیکند.
در ادامه مستندات بلادرنگ، به سراغ گسترش قابلیت چت و ساخت گروه و امکاناتی شبیه به نرمافزار تلگرام خواهیم رفت.