Pertama, saya membuat folder Hubs baru di bawah proyek
Juga, buat file PositionVehicle baru di bawah folder, seperti yang ditunjukkan pada gambar berikut:
Bangun kembali proyek, lalu kita mereferensikan dua file js berikut di halaman tampilan
Nota!!!
File "/Scripts/jquery.signalR-2.2.2.min.js" ditambahkan ke penginstalan SignalR dan ada di disk fisik
"/signalr/hubs" adalahSignalR dibuat secara otomatis, yang tidak dapat ditemukan di disk fisik!
Mari kita lihat file js yang dihasilkan oleh SignalR, sebagai berikut:
/*! * ASP.NET Perpustakaan JavaScript SignalR v2.2.2 * http://signalr.net/
* * Hak Cipta (c) Yayasan .NET. Semua hak dilindungi undang-undang. * Berlisensi di bawah Lisensi Apache, Versi 2.0. Lihat License.txt di root proyek untuk informasi lisensi.
* */
<referensi path="..\..\SignalR.Client.JS\Scripts\jquery-1.6.4.js" /> <jalur referensi="jquery.signalR.js" /> (fungsi ($, jendela, tidak ditentukan) { <param name="$" type="jQuery" /> "gunakan ketat";
if (typeof ($.signalR) !== "function") { lempar Error baru("SignalR: SignalR tidak dimuat. Harap pastikan jquery.signalR-x.js direferensikan sebelum ~/signalr/js."); }
var signalR = $.signalR;
function makeProxyCallback(hub, callback) { fungsi pengembalian () { Panggil metode hub klien callback.apply(hub, $.makeArray(argumen)); }; }
function registerHubProxies(instance, shouldSubscribe) { var key, hub, memberKey, memberValue, subscriptionMethod;
for (kunci dalam contoh) { if (instance.hasOwnProperty(kunci)) { hub = instans[kunci];
jika (!( hub.hubName)) { Bukan hub klien melanjutkan; }
if (shouldSubscribe) { Kami ingin berlangganan acara hub subscriptionMethod = hub.on; } else { Kami ingin berhenti berlangganan dari acara hub subscriptionMethod = hub.off; }
Ulangi semua anggota di hub dan temukan fungsi hub klien untuk berlangganan/berhenti berlangganan for (memberKey di hub.client) { if (hub.client.hasOwnProperty(memberKey)) { memberValue = hub.client[memberKey];
if (!$.isFunction(memberValue)) { Bukan fungsi hub klien melanjutkan; }
subscriptionMethod.call(hub, memberKey, makeProxyCallback(hub, memberValue)); } } } } }
$.hubConnection.prototype.createHubProxies = fungsi () { proksi var = {}; this.starting(fungsi () { Mendaftarkan proxy hub sebagai berlangganan (contoh, shouldSubscribe) registerHubProxies(proxy, true);
this._registerSubscribedHubs(); }).disconnected(fungsi () { Berhenti berlangganan semua proxy hub saat kita "memutuskan sambungan". Ini untuk memastikan bahwa kami tidak menambahkan ulang panggilan balik fungsional. (contoh, shouldSubscribe) registerHubProxies(proxy, false); });
proxies['positionVehicle'] = this.createHubProxy('positionVehicle'); proxies['positionVehicle'].client = { }; proxies['positionVehicle'].server = { halo: fungsi (nama) { return proxies['positionVehicle'].invoke.apply(proxies['positionVehicle'], $.merge(["Hello"], $.makeArray(arguments))); } };
kembali proxy; };
signalR.hub = $.hubConnection("/signalr", { useDefaultPath: false }); $.extend(signalR, signalR.hub.createHubProxies());
}(window.jQuery, window));
Kemudian, mari kita uji dan kodenya adalah sebagai berikut:
Hasil tes adalah sebagai berikut:
Dua pesan pertama yang kami terima keduanya dikirim sendiri, dan kami juga menerimanya, dan pesan ketiga dikirim oleh saya yang membuka browser lain, dan kami juga menerimanya.
Ketika saya menerima pesan, itu bukan websocket, tetapi sebenarnya jajak pendapat HTTP, karena js kami melaporkan kesalahan
Adapun mengapa kesalahan js dilaporkan, kita akan membicarakannya lain kali.
|