ASP.NET SignalR adalah perpustakaan untuk pengembang ASP.NET yang menyederhanakan proses penambahan fungsionalitas web real-time ke aplikasi mereka. Fitur web real-time adalah fitur di mana kode server dapat mendorong konten ke klien yang terhubung segera setelah tersedia, daripada meminta server menunggu klien meminta data baru.
ASP .NET SignalR adalah pustaka kelas di bawah ASP .NET, yang dapat mewujudkan komunikasi real-time dalam proyek web ASP .NET (yaitu, klien (halaman web) dan sisi server dapat memberi tahu satu sama lain secara real time dan metode panggilan), SignalR memiliki tiga mode transmisi: LongLooping (polling panjang), WebSocket (soket HTML5 WEB), Forever Frame ( koneksi permintaan panjang yang menyembunyikan bingkai), dapat ditentukan secara eksplisit di klien WEB atau secara default (disarankan), jika default diadopsi,SignalR akan secara otomatis memilih metode transmisi yang sesuai berdasarkan lingkungan browser。
Karena pemuatan data situs web terlalu lambat, alasannya adalah paket data terlalu besar, dan permintaan jaringan cocok, dan ditemukan bahwa "ws" kosong, dan kemudian ditemukan bahwa SignalR tidak menggunakan protokol websocket.
Ketika saya men-debug secara lokal, saya menemukan bahwa situs web dapat menggunakan protokol WS secara normal, yaitu dapat berkomunikasi secara normal dengan websocket, dan kemudian mengamati perbedaan antara permintaan server dan jaringan lokal, dan menemukan bahwa itu adalah sebagai berikut:
URL:http://ip/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22positionvehiclehub%22%7D%5D&_=1555578162378
Lokal:
{"Url":"/signalr","ConnectionToken":"iX0gmz3XDJpQ62b6eiWK16Quaf+LFlD5aHw1k2oC6dKPz7naDuFmc0M7+xiR72ZjJDuNnMvfZyZF72qJK/4g6FOKAsY5C0uCfViOBXPRJVMBczOXTyCKcztIcugmcBq8" ,"ConnectionId":"50598ad3-b138-458c-a58d-b4f84d23c0e0","KeepAliveTimeout":20.0,"DisconnectTimeout":30.0,"ConnectionTimeout":110.0,"TryWebSockets":true," ProtocolVersion":"1.5","TransportConnectTimeout":5.0,"LongPollDelay":0.0} Server:
{"Url":"/signalr","ConnectionToken":"4JbNUOp5/ju8Fljn29tCsFoTitZXk3XfF3tkuc/OYpaEQPawJHi3U1nTtjcJJzK4mVsOn9nAEECZj7h5732aV7tNJDgsasCon9uQwhqXZC5EAZPrAgASueApAjBCpPpE" ,"ConnectionId":"c46e67b1-4fb4-4345-983f-bf2c391d33e0","KeepAliveTimeout":20.0,"DisconnectTimeout":30.0,"ConnectionTimeout":110.0,"TryWebSockets":false," ProtocolVersion":"1.5","TransportConnectTimeout":5.0,"LongPollDelay":0.0} Beberapa parameter awalnya berbeda dari parameter lokal dan server, dan saya menemukannyaCoba Soket Webparameter, local adalah true, server adalah false.
Melihat informasi, ditemukan bahwa jika SignalR menggunakan protokol WebSocket, kondisi berikut perlu dipenuhi:
- ASP.NET 4.5
- IIS 8.0 (Windows Server 2012 atau Windows 8)
- Fitur WebSockets diaktifkan di server
- Dukungan untuk WebSockets browser
Ini, saya menemukan bahwa versi IIS di server adalah 7.5,Protokol WebSocket tidak didukung di IIS 7.5。
Tautan referensi:Login hyperlink terlihat.
|