Το ASP.NET SignalR είναι μια βιβλιοθήκη για προγραμματιστές ASP.NET που απλοποιεί τη διαδικασία προσθήκης λειτουργικότητας ιστού σε πραγματικό χρόνο στις εφαρμογές τους. Μια δυνατότητα ιστού σε πραγματικό χρόνο είναι μια δυνατότητα όπου ο κώδικας διακομιστή μπορεί να προωθήσει περιεχόμενο σε έναν συνδεδεμένο πελάτη μόλις γίνει διαθέσιμο, αντί να περιμένει ο διακομιστής τον πελάτη να ζητήσει νέα δεδομένα.
Το ASP .NET SignalR είναι μια βιβλιοθήκη κλάσεων κάτω από το ASP .NET, η οποία μπορεί να πραγματοποιήσει επικοινωνία σε πραγματικό χρόνο σε έργα ιστού ASP .NET (δηλαδή, ο πελάτης (ιστοσελίδα) και η πλευρά του διακομιστή μπορούν να ειδοποιούν ο ένας τον άλλον σε πραγματικό χρόνο και μεθόδους κλήσης), το SignalR έχει τρεις τρόπους μετάδοσης: LongLooping (μεγάλη ψηφοφορία), WebSocket (υποδοχή HTML5 WEB), Forever Frame ( μεγάλες συνδέσεις αιτήματος που αποκρύπτουν το πλαίσιο), μπορούν να καθοριστούν ρητά στον πελάτη WEB ή από προεπιλογή (συνιστάται), εάν υιοθετηθεί η προεπιλογή,Το SignalR θα επιλέξει αυτόματα την κατάλληλη μέθοδο μετάδοσης με βάση το περιβάλλον του προγράμματος περιήγησης。
Επειδή η φόρτωση δεδομένων ιστότοπου είναι πολύ αργή, ο λόγος είναι ότι το πακέτο δεδομένων είναι πολύ μεγάλο και το αίτημα δικτύου είναι κατάλληλο και διαπιστώνεται ότι το "ws" είναι κενό και, στη συνέχεια, διαπιστώνεται ότι το SignalR δεν χρησιμοποιεί το πρωτόκολλο websocket.
Όταν έκανα εντοπισμό σφαλμάτων τοπικά, διαπίστωσα ότι ο ιστότοπος μπορεί να χρησιμοποιήσει κανονικά το πρωτόκολλο WS, δηλαδή μπορεί να επικοινωνεί κανονικά με websockets και, στη συνέχεια, να παρατηρήσει τη διαφορά μεταξύ αιτημάτων διακομιστή και τοπικού δικτύου και διαπίστωσα ότι έχει ως εξής:
Διεύθυνση URL:http://ip/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22positionvehiclehub%22%7D%5D&_=1555578162378
Τοπικά:
{"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} Διακομιστές:
{"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} Ορισμένες παράμετροι είναι αρχικά διαφορετικές από τις τοπικές και τις παραμέτρους διακομιστή και το βρήκαΔοκιμάστε το WebSocketsπαράμετρος, το τοπικό είναι αληθές, ο διακομιστής είναι ψευδής.
Εξετάζοντας τις πληροφορίες, διαπιστώνεται ότι εάν το SignalR χρησιμοποιεί το πρωτόκολλο WebSocket, πρέπει να πληρούνται οι ακόλουθες προϋποθέσεις:
- ASP.NET 4.5
- IIS 8.0 (Windows Server 2012 ή Windows 8)
- Η δυνατότητα WebSockets είναι ενεργοποιημένη στο διακομιστή
- Υποστήριξη για WebSockets προγράμματος περιήγησης
Αυτό είναι, βρήκα ότι η έκδοση IIS στον διακομιστή είναι 7.5,Το πρωτόκολλο WebSocket δεν υποστηρίζεται στις υπηρεσίες IIS 7.5。
Σύνδεσμοι αναφοράς:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
|