Detaillierte Erläuterung der Verwendung der SignalR-Technologie unter ASP.NET Core

高洛峰
Freigeben: 2017-02-10 17:35:44
Original
2141 Leute haben es durchsucht

In diesem Artikel wird hauptsächlich die Verwendung der SignalR-Technologie unter ASP.NET Core vorgestellt. Der Herausgeber findet sie recht gut, daher werde ich sie jetzt mit Ihnen teilen und als Referenz verwenden. Folgen wir dem Editor und werfen wir einen Blick darauf

1. Vorwort

Das letzte Mal haben wir über die Verwendung von ASP.NET Core gesprochen Verwenden Sie WebSocket in . Der Protagonist ist dieses Mal SignalR, das uns ein Framework zur Verfügung stellt, um den Betrieb von WebSocket zu vereinfachen.

ASP .NET SignalR ist eine Klassenbibliothek unter ASP.NET, die Echtzeitkommunikation in ASP.NET-Webprojekten erreichen kann. Was ist Echtzeitkommunikation im Web? Es ermöglicht dem Client (Webseite) und dem Server, sich gegenseitig über Nachrichten und Aufrufmethoden zu informieren. Dies geschieht natürlich in Echtzeit. WebSockets ist eine neue API, die von HTML5 bereitgestellt wird und eine Socket-Verbindung zwischen einer Webseite und dem Server herstellen kann. Wenn WebSockets verfügbar sind (dh der Browser unterstützt Html5), verwendet SignalR WebSockets andere Technologien, um den gleichen Effekt zu gewährleisten.

Natürlich bietet SignalR auch eine sehr einfache und benutzerfreundliche High-Level-API, die es dem Server ermöglicht, JavaScript-Funktionen auf dem Client einzeln oder in Stapeln aufzurufen, und es ist sehr praktisch, Verbindungen zu verwalten B. die Verbindung des Clients mit dem Server oder die Trennung, Clientgruppierung und Clientautorisierung sind mit SignalR sehr einfach zu implementieren.

2. Aktuelle Situation von SignalR

Wir wissen, dass SignalR nicht in der ASP.NET Core 1.0.x-Version enthalten ist, sondern die SignalR-Technologie Plan Es ist in ASP.NET Core Version 1.2 integriert, und sein Entwicklungsteam wird auch TypeScript verwenden, um seinen Javascript-Client neu zu schreiben. Die Serverseite wird beispielsweise auch der Entwicklungsmethode von ASP.NET Core nahe kommen in das ASP.NET Core-Abhängigkeitsinjektionsframework.

Die aktuelle Situation ist, dass die SignalR-Technologie nicht in 1.0 verwendet werden kann. Die in diesem Artikel implementierten Demos werden alle unter 1.1 durchgeführt.

3. SignalR integrieren

Natürlich ist ASP.NET Core 1.2 noch einige Zeit von seiner offiziellen Veröffentlichung entfernt, und das ist es derzeit auch Da wir nicht bereit sind, die SignalR-Lösung zu integrieren, müssen wir SignalR manuell integrieren.

Um SignalR in ASP.NET Core zu verwenden, müssen Sie zunächst auf das NuGet-Paket von Microsoft.AspNetCore.SignalR.Server und Microsoft.AspNetCore.WebSockets verweisen.

Natürlich gibt es, wie oben erwähnt, derzeit keinen ASP.NET Core, der SignalR nicht integriert, daher ist das SignalR-Paket nicht auf NUGET zu finden. Wenn wir eine Referenz hinzufügen möchten, müssen wir zu gehen MyGet, um es zu finden.

1. NuGet-Quelle hinzufügen

Erstellen Sie eine neue Datei mit dem Namen NuGet.Config im Programmstammverzeichnis mit folgendem Inhalt:

<?xml version="0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear/>
      <add key="aspnetcidev" value="https://dotnetmygetorg/F/aspnetcore-ci-dev/api/v3/indexjson"/>
      <add key="apinugetorg" value="https://apinugetorg/v3/indexjson"/>
  </packageSources>
</configuration>
Nach dem Login kopieren

Natürlich können wir diese Assembly auch referenzieren, indem wir die Quelle der NuGet-Pakete in Visual Studio festlegen.

2. Fügen Sie einen Verweis auf project.json hinzu

"MicrosoftAspNetCoreSignalRServer": "0-*",
"MicrosoftAspNetCoreWebSockets": "0-*"
Nach dem Login kopieren

Sie können feststellen, dass die Version von SignalR ist die Alpha-Version 0.2.0, daher können sich nachfolgende Versionen stark ändern! Ich habe gehört, dass es leicht umzuschreiben ist.

Es ist erwähnenswert, dass SignalR derzeit nur auf ASP.NET Core 1.1 und höher verfügbar ist. Die .NET Core SDK-Version, die ich in diesem Artikel verwendet habe, ist 1.0.0-preview2-003131, daher zitiere ich Studenten, die Wenn Sie Probleme haben, können Sie versuchen, die CoreApp-Version auf 1.1 zu ändern. Außerdem werden alle AspNetCore-Assemblys auf Version 1.1 geändert.

3. Konfigurationscode hinzufügen

Wir müssen den folgenden Code in der Methode „ConfigureServices“ in der Startup-Klasse hinzufügen:

public void ConfigureServices(IServiceCollection services)
{
   servicesAddSignalR(options => 
   {
     optionsHubsEnableDetailedErrors = true;
   });
}
Nach dem Login kopieren

Fügen Sie den folgenden Code in der Methode „Configure“ in der Startup-Klasse hinzu:

appUseWebSockets();
appUseSignalR();
Nach dem Login kopieren

4. Fügen Sie eine HUB-Klasse hinzu

Hier implementieren wir nur eine kleine Demo, einen einfachen Chatroom, in den mehrere Personen eintreten und die von jedem gesendeten Nachrichten sehen können:

public class ChatHub : Hub
{
    public static List<string> ConnectedUsers;

    public void Send(string originatorUser, string message)
    {
      ClientsAllmessageReceived(originatorUser, message);
    }

    public void Connect(string newUser)
    {
      if (ConnectedUsers == null)
        ConnectedUsers = new List<string>();

      ConnectedUsersAdd(newUser);
      ClientsCallergetConnectedUsers(ConnectedUsers);
      ClientsOthersnewUserAdded(newUser);
    }
}
Nach dem Login kopieren

5. Der Client unterstützt

Erstellen Sie eine statische HTML-Datei mit dem Namen chat.html im wwwroot-Verzeichnis mit folgendem Inhalt:

<!DOCTYPE html>
<html>
<head>
  <title>Awesome Chat Application</title>
  <meta charset="utf-8" />
</head>
<body>
  <style type="text/css">
    userListp{ float: right; }
  </style>
  <ul id="messages"></ul>
  <input type="text" id="messageBox" />
  <input type="button" id="sendMessage" value="Send Message!" />
  <p class="userListp">
    <ul id="userList"> </ul>
  </p>
 
  <script src="http://ajaxaspnetcdncom/ajax/jQuery/jquery-minjs"></script>
  <script src="http://ajaxaspnetcdncom/ajax/signalr/jquerysignalr-minjs"></script>
  <script src="signalr/hubs"></script>
  <script src="chatjs"></script>
</body>
</html>
Nach dem Login kopieren

Erstellen Sie eine chat.js im selben Verzeichnis und fügen Sie das Skript hinzu, um die Funktion zu implementieren:

var userName = prompt("Enter your name: ");
var chat = $connectionchatHub;
chatclientmessageReceived = function (originatorUser, message) {
  $("#messages")append(&#39;<li><strong>&#39; + originatorUser + &#39;</strong>: &#39; + message);
};
chatclientgetConnectedUsers = function (userList) {
  for (var i = 0; i < userListlength; i++)
    addUser(userList[i]);
};
chatclientnewUserAdded = function (newUser) {
  addUser(newUser);
}
$("#messageBox")focus();
$("#sendMessage")click(function () {
  chatserversend(userName, $("#messageBox")val());
  $("#messageBox")val("");
  $("#messageBox")focus();
});
$("#messageBox")keyup(function (event) {
  if (eventkeyCode == 13)
    $("#sendMessage")click();
});
function addUser(user){
  $("#userList")append(&#39;<li>&#39; + user + &#39;</li>&#39;);
}
$connectionhublogging = true;
$connectionhubstart()done(function () {
  chatserverconnect(userName);
});
Nach dem Login kopieren

Lass es uns endlich ausführen:

详解在ASP.NET Core下使用SignalR技术


Das Obige ist der gesamte Inhalt dieses Artikels Hilfreich für das Lernen aller. Bitte unterstützen Sie die chinesische PHP-Website.

Ausführlichere Informationen zur Verwendung der SignalR-Technologie unter ASP.NET Core finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!