SignalRv2 - Meneruskan nilai ke Hub

Saya akan mencoba yang terbaik untuk menjelaskan hal ini. Dalam kode Hub saya, saya telah membuat instance kelas ConnectionMapping. Itu diambil dari sini http://www.asp.net/signalr/overview/guide-to-the-api/mapping-users-to-connections#inmemory .

ConnectionMapping ini memerlukan kunci unik untuk kamusnya. Saya memiliki kode formulir web di belakang yang disebut default.aspx.cs. Dalam kode di belakang ini, saya akan mendapatkan Nama Pengguna Login unik di dalam acara Page_Load. Bagaimana cara meneruskan nama pengguna ini ke Hub untuk menambahkannya ke ConnectionMapping?

Saya mencoba.

IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<MyHub>();

Tapi saya tidak tahu apa yang saya lakukan setelah melakukan ini. Membantu.


person RStyle    schedule 22.05.2015    source sumber


Jawaban (1)


Jawaban singkatnya adalah, Anda tidak. Tidak dengan kode yang Anda miliki. Masalahnya adalah urutan ini:

  • Halaman permintaan klien
  • Kode sisi server berjalan (Page_Load)
  • HTML/JS yang dihasilkan dikirim ke klien
  • Klien terhubung ke SignalR

Pada titik ini, Anda mungkin akan menambahkan ke ConnectionMapping. Masalahnya tentu saja, data/variabel apa pun di Page_Load tidak lagi tersedia, dan Anda tidak memiliki cara untuk memetakan koneksi yang baru saja Anda terima ke permintaan halaman tersebut meskipun tersedia.

Situs web Anda perlu menyimpan beberapa informasi, mungkin nama pengguna itu, dan meneruskannya ke hub saat koneksi (mungkin melalui string kueri). Data bahkan dapat disimpan di halaman sebagai bagian dari acara Page_Load (dalam div tersembunyi atau melalui mekanisme lain).

Sekarang Anda memiliki kedua informasi tersebut secara bersamaan, dan dapat menambahkan pemetaan secara normal.

person BradleyDotNET    schedule 22.05.2015