Adakah yang bisa memberi tahu saya bagaimana SignalR bekerja secara internal dengan cara tingkat tinggi?
Saya menduga itu adalah pembilasan data menggunakan Response.Flush
dan di sisi klien mengirim permintaan Ajax pada interval tertentu. Apakah itu benar?
Jawaban:
Tidak, SignalR adalah abstraksi atas suatu koneksi. Ini memberi Anda dua model pemrograman melalui koneksi itu (hub dan koneksi persisten). SignalR memiliki konsep transportasi, masing-masing transportasi memutuskan bagaimana data dikirim / diterima dan bagaimana menghubungkan dan memutuskan sambungan.
SignalR memiliki beberapa transportasi bawaan:
SignalR mencoba untuk memilih koneksi "terbaik" yang didukung oleh server dan klien (Anda juga dapat memaksanya untuk menggunakan transportasi tertentu).
Itu level tinggi. Jika Anda ingin melihat bagaimana setiap transportasi diimplementasikan, Anda dapat melihat kode sumbernya .
Ada juga kode klien untuk setiap transportasi: https://github.com/SignalR/SignalR/tree/master/src/Microsoft.AspNet.SignalR.Client.JS
Jika Anda bertanya tentang bagaimana transportasi pemungutan suara panjang bekerja khususnya:
Ini mengirimkan permintaan ajax ke server yang menunggu sinyal untuk merespons secara tidak sinkron. Ketika ada sinyal atau permintaan habis, itu kembali dari server dan mengirimkan permintaan lain dan proses berlanjut. (Saya meninggalkan beberapa detail tentang bagaimana klien melacak apa yang dilihatnya sehingga tidak ketinggalan pesan)
Semoga itu menjawab sebagian besar pertanyaan Anda.
sumber
@davidfowl telah menjawab bagian utama. Namun, untuk memberikan beberapa rincian lebih lanjut mengenai perbedaan perilaku transportasi, khususnya antara WebSocket dan transportasi lainnya; di bawah ini adalah beberapa poin.
sumber