Perbedaan utama adalah bahwa Anda tidak dapat melakukan RPC dengan PersistentConnection, Anda hanya dapat mengirim data mentah. Jadi alih-alih mengirim pesan dari server seperti ini
Clients.All.addNewMessageToPage(name, message);
Anda harus mengirim objek dengan Connection.Broadcast()
atau Connection.Send()
dan kemudian klien harus memutuskan apa yang harus dilakukan dengan itu. Anda dapat, misalnya, mengirim objek seperti ini:
Connection.Broadcast(new {
method: "addNewMessageToPage",
name: "Albert",
message: "Hello"
});
Dan pada klien, bukan hanya mendefinisikan
yourHub.client.addNewMessageToPage = function(name, message) {
// things and stuff
};
Anda harus menambahkan panggilan balik untuk menangani semua pesan yang masuk:
function addNewMessageToPage(name, message) {
// things and stuff
}
connection.received(function (data) {
var method = data.method;
window[method](data.name, data.message);
});
Anda harus melakukan pengiriman yang sama di sisi server dalam OnReceived
metode ini. Anda juga harus melakukan deserialisasi data string di sana daripada menerima objek yang sangat diketik seperti yang Anda lakukan dengan metode hub.
Tidak ada banyak alasan untuk memilih PersistentConnection daripada Hubs. Salah satu alasan yang saya ketahui adalah bahwa mungkin untuk mengirim JSON preserialisasi melalui PersistentConnection, yang tidak dapat Anda lakukan menggunakan hub. Dalam situasi tertentu, ini mungkin manfaat kinerja yang relevan.
Selain itu, lihat kutipan ini dari dokumentasi :
Memilih model komunikasi
Sebagian besar aplikasi harus menggunakan Hubs API. API Koneksi dapat digunakan dalam kondisi berikut:
Bergantung pada struktur pesan Anda, Anda mungkin juga mendapatkan sedikit keuntungan dari menggunakan PersistentConnection.
Anda mungkin ingin melihat contoh SignalR, khususnya di sini.