مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

lrrtm12

عضویت از 1395/09/04

راهنمایی برای استفاده از signalr در وب سرویس

  • چهارشنبه 14 شهریور 1397
  • 09:43
تشکر میکنم

سلام. من یه وب سرویس برای اپلیکیشن اندرویدی دارم مینویسم با asp.net web api . توی یه قسمت اپ فروشنده ها باید درخواست های کاربرا رو ببنین. من توی این قسمت از سوکت و signalr میخوام استفاده کنم. به این صورت که هر موقع کاربرها درخواست جدیدی رو ثبت کردن و درخواست تو دیتابیس ثبت شد فروشنده هایی که نزدیکش هستن (شعاع 3 کیلومتری) بتونن درخواست رو ببینن.

من کدهای بدست آوردن فروشنده های نزدیک رو نوشتم و فقط مشکلم الان با سوکت هستش. این قسمت چطور میشه؟ فیلم آموزشی که تو سایت بود را هم دیدم ولی اون واسه یه سایت بود از jquery استفاده میشد که تو اندروید نمیشه

پاسخ های این پرسش

تعداد پاسخ ها : 10 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • چهارشنبه 14 شهریور 1397
  • 11:18

باید در موبایل از push Notification ااستفاده کنید 

وب سرویس این قابلیت را نداره 

سرچ کنید و راجع بهش تحقیق کنید 

کاربر سایت

lrrtm12

عضویت از 1395/09/04

  • چهارشنبه 14 شهریور 1397
  • 13:51

خب الان اپی مثل اسنپ آخرین درخواست ها کاربرا به راننده ها رو چطور نشون میده؟

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • چهارشنبه 14 شهریور 1397
  • 13:57

push میکنه از سرور 

کاربر سایت

lrrtm12

عضویت از 1395/09/04

  • چهارشنبه 14 شهریور 1397
  • 14:04

میشه یکم توضیح بدیم؟
یا لینکی ازش بدین
یعنی اپ خودش دیتابیس رو بررسی میکنه؟

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • چهارشنبه 14 شهریور 1397
  • 14:07

ما سمت سرور رو با SignalR پیاده میکنیم و زامارین را Push Notification 

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

کاربر سایت

lrrtm12

عضویت از 1395/09/04

  • چهارشنبه 14 شهریور 1397
  • 14:15

سمت اندرودیش با جاوا و اندروید استودیو هست

من فقط سمت سرورش رو باید بنویسم

الان توی پروژه signalr رو اضافه کردم. مثلا باید یه hub بسازم که توش دیتابیس رو بررسی کنه و اون چیزایی که میخوام رو برگردونه؟
ورودی این تابع چه چیزایی میتونه باشه؟ من الان واسه هر فروشگاه توکن دارم. میتونه مثلا توکن باشه و تو دیتابیس بررسی کنه و چیزهایی که میخوام رو برگردونه؟

و بعد اینکه پشت signalr چیه؟ یعنی دستگاه اندروید این تابع رو هر چند ثانیه فراخونی میکنه؟

کاربر سایت

lrrtm12

عضویت از 1395/09/04

  • چهارشنبه 14 شهریور 1397
  • 16:54

میشه یکم راهنمایی کنید. قسمت hub شبیه همون فیلمی که تو سایت هست میشه ولی اطلاعات دیگه ای رو برمیگردونه؟

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • چهارشنبه 14 شهریور 1397
  • 17:31

من انندروید استادیو رو نمیدونم 

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

بله هاب همون شکلی هست 

کاربر سایت

lrrtm12

عضویت از 1395/09/04

  • پنجشنبه 15 شهریور 1397
  • 16:12

این الان یه نمونه از کدهای منه:

using System;
using System.Collections.Generic;
using System.Device.Location;
using System.Globalization;
using System.Linq;
using WebService.Models.Domain;
using Microsoft.AspNet.SignalR;

namespace WebService
{
    public class MyHub : Hub
    {
        private readonly mydb db = new mydb();

        public void Send(string storeToken)
        {
            try
            {
                if (storeToken != null)
                {
                    ......
                    ......
                    ......

                                if (distanceInMeter < maxStoreDistance)
                                {
                                    var obj = new GetBuy
                                    {
                                        buy = new AllBuy
                                        {
                                            id = newBuyRequest.Id,
                                            longitude = newBuyRequest.longitude ?? 0,
                                            latitude = newBuyRequest.latitude ?? 0,
                                            time = Convert.ToString(newBuyRequest.time, CultureInfo.InvariantCulture),
                                            price = newBuyRequest.price ?? 0,
                                            distanceInMeter = distanceInMeter
                                        }
                                    };

                                    resultList.Add(obj.buy);
                                }



                        Clients.All.sendToShop(resultList);
                    }
                }

                Clients.All.sendToShop("error");
            }
            catch (Exception)
            {
                Clients.All.sendToShop("error");
            }
        }

        //************************************
        private class GetBuy
        {
            public AllBuy buy;
        }
        private class AllBuy
        {
            public int id;
            public double longitude;
            public double latitude;
            public string time;
            public double price;
            public double distanceInMeter;
        }
    }
}

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

و اینکه میشه این تابع hub رو از یه تابع دیگه مثل تابع ثبت درخواست جدید توسط کاربر  که web api هست فراخونی کرد تا آخرین درخواست رو بررسی کنه و به فروشگاه مورد نظر بفرسته؟

کاربر سایت

salman_b

عضویت از 1396/02/18

  • یکشنبه 18 شهریور 1397
  • 16:24

آقاجان راجع به pushing services جستجو کنید تا عمق مطلب رو درک کنید.

بررسی کنه معنی نداره، به محض اینکه دریافت کنه به بقیه کلاینت ها push میکنه.

خیلی هم ساده است کار کردن باهاش، باید پکیج کلاینت متناسب با ورژن SignalR رو به پروژه ی اندروید اضافه کنید و با اون notification service رو در برنامه تون راه اندازی کنید.

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)