Heim  >  Artikel  >  Backend-Entwicklung  >  Asp.net SignalR erstellt eine Echtzeit-Chat-Anwendung

Asp.net SignalR erstellt eine Echtzeit-Chat-Anwendung

高洛峰
高洛峰Original
2016-12-24 14:51:241303Durchsuche

1. Übersicht

Erstellen Sie eine Echtzeit-Chat-Anwendung mit ASP.NET und SignalR 2. Fügen Sie SignalR zu Ihrer MVC 5-Anwendung hinzu und erstellen Sie eine Chat-Ansicht zum Senden und Anzeigen von Nachrichten.

In der Demo lernen Sie SignalR-Entwicklungsaufgaben kennen, darunter: ︰

Hinzufügen der SignalR-Bibliothek zu einer MVC 5-Anwendung.
Erstellen Sie Hub- und Startup-Kurse, um Inhalte an Kunden weiterzugeben.
Verwenden Sie die SignalR-jQuery-Bibliothek von einer Webseite aus, um E-Mails zu senden und Aktualisierungen vom Hub anzuzeigen.

Der Screenshot unten zeigt die fertige Chat-Anwendung, die im Browser ausgeführt wird.

Asp.net SignalR创建实时聊天应用程序

2. Implementierung

Erstellen Sie eine ASP.NET MVC 5-Anwendung, installieren Sie die SignalR-Bibliothek, fügen Sie eine Chat-Anwendung hinzu und erstellen Sie sie.

1). Erstellen Sie in Visual Studio eine C# ASP.NET-Anwendung mit dem Namen SignalRChat, die auf .NET Framework 4.5 abzielt, und klicken Sie auf OK.

Asp.net SignalR创建实时聊天应用程序

2) . Wählen Sie im Dialogfeld „Neues ASP.NET-Projekt“ MVC aus und klicken Sie auf Authentifizierung ändern

Asp.net SignalR创建实时聊天应用程序

Hinweis: Wenn die Anwendung einen anderen Authentifizierungsanbieter auswählt, wird die Klasse „Startup.cs“ verwendet Wählen Sie hier „Keine Authentifizierung“ aus und erstellen Sie selbst eine Startup-Klasse.

3). Installieren Sie SignalR
Öffnen Sie die Paketmanager-Konsole der Tools |. Dieser Schritt fügt dem Projekt eine Reihe von Skriptdateien und Assemblyverweisen hinzu, die die SignalR-Funktionalität ermöglichen.

Eingabe: install-package Microsoft.AspNet.SignalR

Asp.net SignalR创建实时聊天应用程序

Die Installation ist abgeschlossen und eine Datei wie diese wird im Skriptordner angezeigt:

Asp.net SignalR创建实时聊天应用程序

4). Erstellen Sie eine Klasse im Stammverzeichnis und nennen Sie sie Startup:

5). Fügen Sie dem Projektordner ein vorhandenes Element hinzu:
using Owin;
using Microsoft.Owin;
[assembly: OwinStartup(typeof(SignalRChat.Startup))]
namespace SignalRChat
{
 public class Startup
 {
  public void Configuration(IAppBuilder app)
  {
   // Any connection or hub wire up and configuration should go here
   app.MapSignalR();
  }
 }
}
Klicken Sie mit der rechten Maustaste auf den Hubs-Ordner, klicken Sie auf „Neues Element hinzufügen“ und wählen Sie dann im Bereich „Installiert“ den Knoten „SignalR“ aus Nehmen Sie die SignalR-Hub-Klasse (v2) und erstellen Sie sie mit dem Namen ChatHub.cs.


Ändern Sie den Code:

using System;
using System.Web;
using Microsoft.AspNet.SignalR;
namespace SignalRChat
{
 public class ChatHub : Hub
 {
  public void Send(string name, string message)
  {
   // Call the addNewMessageToPage method to update clients.
   Clients.All.addNewMessageToPage(name, message);
  }
 }
}

6). Bearbeiten Sie die HomeController-Klasse und suchen Sie sie in Controllers/HomeController.cs, fügen Sie die hinzu Folgende Methode zur Art. Diese Methode gibt die Ansicht des Chats zurück, die Sie in einem späteren Schritt erstellen werden.

public ActionResult Chat()
 
{
 
 return View();
 
}

7). Klicken Sie mit der rechten Maustaste auf die Chat()-Methode >

Ändern Sie den Code wie folgt:

Asp.net SignalR创建实时聊天应用程序

Führen Sie das Projekt mit F5 aus, um den oben genannten Effekt zu erzielen, und Benutzer können dem synchronen Echtzeit-Chat beitreten in Echtzeit.
@{
 ViewBag.Title = "Chat";
}
<h2>Chat</h2>
<div class="container">
 <input type="text" id="message" />
 <input type="button" id="sendmessage" value="Send" />
 <input type="hidden" id="displayname" />
 <ul id="discussion"></ul>
</div>
@section scripts {
 <!--Script references. -->
 <!--The jQuery library is required and is referenced by default in _Layout.cshtml. -->
 <!--Reference the SignalR library. -->
 <script src="~/Scripts/jquery.signalR-2.0.3.min.js"></script>
 <!--Reference the autogenerated SignalR hub script. -->
 <script src="~/signalr/hubs"></script>
 <!--SignalR script to update the chat page and send messages.-->
 <script>
  $(function () {
   // 建立对应server端Hub class的对象,请注意ChatHub(Hubs文件夹下的类名)的第一个字母要改成小写
   var chat = $.connection.chatHub;
   // 定义client端的javascript function,供server端hub,通过dynamic的方式,调用所有Clients的javascript function
   chat.client.addNewMessageToPage = function (name, message) { //这里的fuction(name,message)=>ChatHub.cs 中的Send(string name, string message)
    //当server端调用sendMessage时,将server push的message数据,呈现在wholeMessage中
    $(&#39;#discussion&#39;).append(&#39;<li><strong>&#39; + htmlEncode(name)
     + &#39;</strong>: &#39; + htmlEncode(message) + &#39;</li>&#39;);
   };
   // Get the user name and store it to prepend to messages.
   $(&#39;#displayname&#39;).val(prompt(&#39;Enter your name:&#39;, &#39;&#39;));
   // Set initial focus to message input box.
   $(&#39;#message&#39;).focus();
   //把connection打开
   $.connection.hub.start().done(function () {
    $(&#39;#sendmessage&#39;).click(function () {
     //调用叫server端的Hub对象,将#message数据传给server
     chat.server.send($(&#39;#displayname&#39;).val(), $(&#39;#message&#39;).val());
     $(&#39;#message&#39;).val(&#39;&#39;).focus();
    });
   });
  });
  // This optional function html-encodes messages for display in the page.
  function htmlEncode(value) {
   var encodedValue = $(&#39;<div />&#39;).text(value).html();
   return encodedValue;
  }
 </script>
}

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er zum Lernen aller beiträgt. Ich hoffe auch, dass jeder die PHP-Chinesisch-Website unterstützt.

Weitere Artikel zum Erstellen von Echtzeit-Chat-Anwendungen mit Asp.net SignalR finden Sie auf der chinesischen PHP-Website!


Stellungnahme:
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