Asosiy mundarijaga



Download 40.5 Kb.
Sana31.10.2020
Hajmi40.5 Kb.

Asosiy mundarijaga

Hujjatlar .NET ASP. NET 4.x

Ushbu matnni qisman mashinani tarjima qilish orqali tarjima qilish mumkin.

ASP.NET Core uchun SignalR-dagi uyadan foydalanish

01/16/2020

O'qish uchun 6 daqiqa

Ushbu maqolada

SignalR uyasi nima

SignalR uyalarini sozlash

Uyalar yaratish va ulardan foydalanish

Kontekst ob'ekti

Mijozlar ob'ekti

Mijozlarga xabarlar yuborish

Qattiq yozilgan uyalar

Hub usuli nomini o'zgartiring

Ulanish uchun tadbirlarni boshqarish

Xato qilish

Tegishli manbalar

Reychel Appel ( va Kevin Griffin)

Namunaviy kodni ko'rish yoki yuklab olish (Yuklab olish)

SignalR uyasi nima

SignalR konsentratori API sizga serverdan ulangan mijozlarga qo'ng'iroqlarni amalga oshirishga imkon beradi. Server kodi mijoz tomonidan chaqiriladigan usullarni belgilaydi. Mijoz kodi serverdan chaqiriladigan usullarni belgilaydi. Pardaning orqasida mijoz va server o'rtasida real vaqt rejimida ma'lumot almashish imkoniyatini yaratadigan barcha narsalar mavjud.

SignalR uyalarini sozlash

SignalR-ning o'rta dasturi services.AddSignalRchaqiruv orqali sozlangan ba'zi xizmatlarni talab qiladi .

C #

Nusxalash



services.AddSignalR();

SignalR funktsiyalarini ASP.NET Core dasturiga qo'shganda, endpoint.MapHub Startup.Configureusulni chaqirish orqali qo'ng'iroq qilib SignalR yo'nalishlarini sozlang app.UseEndpoints.

C #

Nusxalash



app.UseRouting();

app.UseEndpoints(endpoints =>

{

endpoints.MapHub("/chathub");



});

Uyalar yaratish va ulardan foydalanish

O'zidan meros qolgan sinf haqida e'lon qilish orqali markaz yarating Hubva unga xalq usullarini qo'shing. Mijozlar belgilangan usullarga qo'ng'iroq qilishlari mumkin . public

C #


Nusxalash

public class ChatHub : Hub

{

public Task SendMessage(string user, string message)



{

return Clients.All.SendAsync("ReceiveMessage", user, message);

}

}

Siz har qanday C # usulidagi kabi qaytish turi va parametrlarini, shu jumladan murakkab turlar va qatorlarni ko'rsatishingiz mumkin. SignalR parametr va qaytish qiymatlaridagi murakkab ob'ektlar va massivlarni seriyalashtirish va deserializatsiyalash bilan shug'ullanadi.



Eslatma

Uyalar vaqtincha:

Hub sinfidagi mulkda davlatni saqlamang. Har bir uyali usul yangi qo'ng'iroq namunasi uchun amalga oshiriladi.

Ishlatilgan awaitHub-qaram mos kelmaydigan, usullari baþlatýrken. Masalan, usul chaqirilmasa muvaffaqiyatsiz bo'lishi mumkin va hub usuli tugatilishidan oldin tugaydi . Clients.All.SendAsync(...)awaitSendAsync

Kontekst ob'ekti

HubBu sinf Contextulanish ma'lumotlari bilan quyidagi xususiyatlarni o'z ichiga olgan xususiyatga ega:

1-JADVAL

Mulk. Ta'rif:

ConnectionId SignalR tomonidan tayinlangan noyob ulanish identifikatorini qaytaradi. Har bir ulanish uchun bitta ulanish identifikatori mavjud.

UserIdentifier Bosdi foydalanuvchi id . Sukut bo'yicha SignalR foydalanadi dan foydalanuvchi ID sifatida ulanish-tegishli biri. ClaimTypes.NameIdentifierClaimsPrincipal

User ClaimsPrincipalJoriy foydalanuvchi bilan bog'langan ob'ektni oladi .

Items Ushbu ulanish doirasidagi ma'lumotlarni almashish uchun ishlatilishi mumkin bo'lgan kalit qiymat to'plamini qaytaradi. Ma'lumotlar ushbu to'plamda saqlanishi mumkin va hub usuliga turli xil qo'ng'iroqlar orqali ulanish uchun saqlanadi.

Features Aloqada mavjud bo'lgan funktsiyalar to'plamini oladi. Endi ushbu to'plam ko'pgina stsenariylarda talab qilinmaydi, shuning uchun u hali hujjatlashtirilmagan.

ConnectionAborted Ulanish to'g'risida bildirishnoma CancellationTokenyuboradi.

Hub.Contextshuningdek quyidagi usullarni o'z ichiga oladi.

2-JADVAL


Usul Ta'rif

GetHttpContext Agar ulanish HTTP so'rovi bilan bog'liq bo'lmasa HttpContextyoki ulanish uchun qaytadi null. HTTP ulanishlarida bu usul HTTP sarlavhalari va so'rov satrlari kabi ma'lumotlarni olish uchun ishlatilishi mumkin.

Abort Ulanishni to'xtatadi.

Mijozlar ob'ekti

HubSinf Clientsserver va mijoz o'rtasida ma'lumot almashish uchun quyidagi xususiyatlarni o'z ichiga olgan xususiyatga ega:

3-JADVAL


Mulk. Ta'rif:

All Barcha ulangan mijozlar uchun usul chaqiradi.

Caller Hub usuli deb nomlangan mijoz uchun usul chaqiradi

Others Usulni chaqirgan mijozdan tashqari barcha ulangan mijozlar uchun usulni chaqiradi

Hub.Clientsshuningdek quyidagi usullarni o'z ichiga oladi.

4-JADVAL


Usul Ta'rif

AllExcept Belgilangan ulanishlar bundan mustasno barcha ulangan mijozlar uchun usulni chaqiradi.

Client Belgilangan ulangan mijoz uchun usulni chaqiradi

Clients Muayyan ulangan mijozlar uchun usulni chaqiradi.

Group Belgilangan guruhdagi barcha ulanishlar uchun usulni chaqiradi.

GroupExcept Belgilangan aralashmalardan tashqari, belgilangan guruhdagi barcha aralashmalar uchun usulni chaqiradi.

Groups Bir nechta ulanish guruhlari uchun usul chaqiradi

OthersInGroup Hub usuli deb nomlangan mijozdan tashqari, ulanishlar guruhi uchun usul chaqiriladi.

User Muayyan foydalanuvchi bilan bog'liq bo'lgan barcha ulanishlar uchun usulni chaqiradi.

Users Belgilangan foydalanuvchilar bilan bog'liq bo'lgan barcha ulanishlar uchun usulni chaqiradi.

Yuqoridagi jadvallardagi har bir xususiyat yoki usul ob'ektni SendAsyncusul bilan qaytaradi . Usul chaqirilayotgan mijoz usulining nomi va parametrlarini ko'rsatishga imkon beradi. SendAsync

Mijozlarga xabarlar yuborish

Muayyan mijozlarni chaqirish uchun Clientsob'ektning xususiyatlaridan foydalaning . Quyidagi misolda uchta uyali usul mavjud:

SendMessagefoydalanib, barcha ulangan mijozlarga xabar yuboradi Clients.All.

SendMessageToCallerqo'ng'iroq qiluvchiga qayta xabar yuboradi Clients.Caller.

SendMessageToGroupsSignalR UsersGuruhdagi barcha mijozlarga xabar yuboradi .

C #

Nusxalash



public Task SendMessage(string user, string message)

{

return Clients.All.SendAsync("ReceiveMessage", user, message);



}

public Task SendMessageToCaller(string message)

{

return Clients.Caller.SendAsync("ReceiveMessage", message);



}

public Task SendMessageToGroup(string message)

{

return Clients.Group("SignalR Users").SendAsync("ReceiveMessage", message);



}

Qattiq yozilgan uyalar

Uni qo'llashning salbiy tomoni SendAsyncshundaki, u sehrli satrdan foydalanib, mijozni chaqirish usulini ko'rsatadi. Agar usul nomi noto'g'ri yozilgan bo'lsa yoki mijozda yo'q bo'lsa, bu kodni ish vaqtidagi xatolar uchun ochiq qoldiradi.

Foydalanishga alternativa SendAsyncbu Hub Hub ni kuchli yozish . Quyidagi misolda mijoz usullari nomli interfeysga qaytarildi . ChatHubIChatClient

C #

Nusxalash



public interface IChatClient

{

Task ReceiveMessage(string user, string message);



Task ReceiveMessage(string message);

}

Ushbu interfeys avvalgi ChatHubmisolni qayta tuzish uchun ishlatilishi mumkin .



C #

Nusxalash

public class StronglyTypedChatHub : Hub

{

public async Task SendMessage(string user, string message)



{

await Clients.All.ReceiveMessage(user, message);

}

public Task SendMessageToCaller(string message)



{

return Clients.Caller.ReceiveMessage(message);

}

}

Foydalanish Hub, kompilyatsiya vaqtida mijozning usullarini tekshirishni o'z ichiga oladi. Bu sehrli iplarni ishlatish bilan bog'liq muammolarni oldini oladi , chunki u faqat interfeysda belgilangan usullardan foydalanishni ta'minlaydi. Hub



Kuchli terilgan Hubkalitdan foydalanish foydalanish imkoniyatini o'chiradi SendAsync. Interfeysda belgilangan barcha usullar baribir asenkron sifatida belgilanishi mumkin. Aslida, ushbu usullarning har biri qaytishi kerak . Bu interfeys bo'lgani uchun, kalit so'zni ishlatmang . Masalan: Task async

C #


Nusxalash

public interface IClient

{

Task ClientMethod();



}

Eslatma


AsyncQo'shimchalar usul nomidan o'chirilmaydi. Agar mijoz usuli yordamida aniqlanmasa , ism sifatida ishlatilmasligi kerak . .on('MyMethodAsync')MyMethodAsync

Hub usuli nomini o'zgartiring

Odatiy bo'lib, server uyasi usulining nomi .NET usulining nomi. Shu bilan birga, ushbu standart qiymatni o'zgartirish va usul nomini qo'lda belgilash uchun siz hubmodname atributidan foydalanishingiz mumkin . Mijoz ushbu usulni chaqirganda .NET usuli nomi o'rniga ushbu ismdan foydalanishi kerak.

C #


Nusxalash

[HubMethodName("SendMessageToUser")]

public Task DirectMessage(string user, string message)

{

return Clients.User(user).SendAsync("ReceiveMessage", message);



}

Ulanish uchun tadbirlarni boshqarish

SignalR Hubs API ulanishlarni boshqarish va kuzatishda virtual OnConnectedAsyncusullarni taqdim etadi OnDisconnectedAsync. Mijoz uyaga ulanganda, masalan, guruhga qo'shilganda, amallarni bajarish uchun virtual usulni bekor qiling . OnConnectedAsync

C #


Nusxalash

public override async Task OnConnectedAsync()

{

await Groups.AddToGroupAsync(Context.ConnectionId, "SignalR Users");



await base.OnConnectedAsync();

}

OnDisconnectedAsyncMijozni uzib qo'yganingizda virtual usulni bekor qiling . Agar mijoz qasddan uzilib qolsa (masalan, qo'ng'iroq qilish orqali), parametr muhimdir. Ammo, agar xato (masalan, tarmoq xatosi) tufayli mijoz uzilib qolsa, parametr ushbu xatoni tavsiflovchi istisnoni o'z ichiga oladi. connection.stop()exception null exception



C #

Nusxalash

public override async Task OnDisconnectedAsync(Exception exception)

{

await Groups.RemoveFromGroupAsync(Context.ConnectionId, "SignalR Users");



await base.OnDisconnectedAsync(exception);

}

Ogohlantirish



Xavfsizlik to'g'risida ogohlantirish. Oziq-ovqat mahsulotlari ConnectionId, agar SignalR server yoki ASP.NET Core 2.2 mijoz versiyasi yoki avvalgi zararli Taqlid olib kelishi mumkin.

Xato qilish

Hub usulida tashlangan istisnolar ushbu usul deb nomlangan mijozga yuboriladi. JavaScript mijozida usul JavaScript va'dasini qaytaradi . Mijoz xato haqidagi xabarni va'da qilingan ishlov beruvchisi bilan birga olganida , u chaqiriladi va JavaScript ob'ekti sifatida uzatiladi . invoke catchError

Javascript

Nusxalash

connection.invoke("SendMessage", user, message).catch(err => console.error(err));

Agar uyadan istisno bo'lsa, ulanishlar yopilmaydi. Odatiy bo'lib, SignalR mijozga xato haqida xabar beradi. Masalan:

Nusxalash

Microsoft.AspNetCore.SignalR.HubException: An unexpected error occurred invoking 'MethodName' on the server.

Kutilmagan istisnolar, odatda, ma'lumotlar bazasiga ulanish uzilib qolganda ishga tushadigan istisno holatida ma'lumotlar bazasi serverining nomi kabi nozik ma'lumotlarni o'z ichiga oladi. SignalR xavfsizlik chorasi sifatida ushbu batafsil xato xabarlarini taqdim etmaydi. Istisno to'g'risidagi ma'lumot nima uchun berkitilishi haqida ko'proq ma'lumot olish uchun Xavfsizlik choralariga qarang .

Mijozga uzatilishi kerak bo'lgan alohida shartlar mavjud bo'lsa , siz HubExceptionsinfdan foydalanishingiz mumkin . Agar siz hub usulidan SignalR-ni chiqarsangiz , u mijozga butun xabarni o'zgarishsiz yuboradi . HubException

C #


Nusxalash

public Task ThrowException()

{

throw new HubException("This error will be sent to the client!");



}

Eslatma


SignalR mijozga Messageistisno mulkni yuboradi . Mijozlarni stacking va boshqa istisno xususiyatlari mavjud emas.

Tegishli manbalar

ASP.NET CoreSignalR-ga kirish

JavaScript mijozi

Azure-da nashr eting

Ushbu sahifadagi ma'lumotlar yordam berdimi?

Ha Yo'q

qayta aloqa

Fikrlaringizni quyidagilarga yuboring:

Shuningdek, siz to'g'ridan-to'g'ri GitHub-da fikrlaringizni qoldirishingiz mumkin.

Ushbu hujjat uchun hali sharhlar yo'q. Ushbu sahifadagi sharhlar bu erda ko'rsatiladi.

Rus


Oldingi versiya hujjatlari Blog Yakunlash Maxfiylik va cookie fayllari Foydalanish shartlari Sayt sharhlari Savdo belgilari © Microsoft 2020

Download 40.5 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2020
ma'muriyatiga murojaat qiling

    Bosh sahifa
davlat universiteti
ta’lim vazirligi
O’zbekiston respublikasi
maxsus ta’lim
zbekiston respublikasi
axborot texnologiyalari
o’rta maxsus
davlat pedagogika
nomidagi toshkent
guruh talabasi
pedagogika instituti
texnologiyalari universiteti
toshkent axborot
xorazmiy nomidagi
rivojlantirish vazirligi
samarqand davlat
navoiy nomidagi
haqida tushuncha
toshkent davlat
ta’limi vazirligi
nomidagi samarqand
vazirligi toshkent
Darsning maqsadi
Toshkent davlat
tashkil etish
kommunikatsiyalarini rivojlantirish
Alisher navoiy
Ўзбекистон республикаси
matematika fakulteti
bilan ishlash
pedagogika universiteti
Nizomiy nomidagi
fanining predmeti
sinflar uchun
o’rta ta’lim
maxsus ta'lim
таълим вазирлиги
vazirligi muhammad
fanlar fakulteti
ta'lim vazirligi
tibbiyot akademiyasi
Toshkent axborot
махсус таълим
haqida umumiy
umumiy o’rta
Referat mavzu
ishlab chiqarish
fizika matematika
pedagogika fakulteti
universiteti fizika
Navoiy davlat