AngularJS
SignalR mit AngularJs
Suche…
Einführung
In diesem Artikel konzentrieren wir uns auf "So erstellen Sie ein einfaches Projekt mit AngularJs And SignalR". In diesem Training müssen Sie wissen, wie "App mit AngleJs erstellen", "Service für AngularJs erstellen / verwenden" und Grundkenntnisse über SignalR "Dazu empfehlen wir https://www.codeproject.com/Tips/590660/Introduction-to-SignalR) .
SignalR und AngularJs [ChatProject]
Schritt 1: Projekt erstellen
- Application
- app.js
- Controllers
- appController.js
- Factories
- SignalR-factory.js
- index.html
- Scripts
- angular.js
- jquery.js
- jquery.signalR.min.js
- Hubs
Verwendung der SignalR-Version: SignalR-2.2.1
Schritt 2: Startup.cs und ChatHub.cs
Wechseln Sie in Ihr Verzeichnis "/ Hubs" und fügen Sie 2 Dateien hinzu [Startup.cs, ChatHub.cs].
Startup.cs
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(SignalR.Hubs.Startup))]
namespace SignalR.Hubs
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}
ChatHub.cs
using Microsoft.AspNet.SignalR;
namespace SignalR.Hubs
{
public class ChatHub : Hub
{
public void Send(string name, string message, string time)
{
Clients.All.broadcastMessage(name, message, time);
}
}
}
Schritt 3: Winkel-App erstellen
Wechseln Sie in Ihr Verzeichnis "/ Application" und fügen Sie die Datei [app.js] hinzu
app.js
var app = angular.module("app", []);
Schritt 4: SignalR Factory erstellen
Wechseln Sie in das Verzeichnis "/ Application / Factories" und fügen Sie die Datei [SignalR-factory.js] hinzu
SignalR-factory.js
app.factory("signalR", function () {
var factory = {};
factory.url = function (url) {
$.connection.hub.url = url;
}
factory.setHubName = function (hubName) {
factory.hub = hubName;
}
factory.connectToHub = function () {
return $.connection[factory.hub];
}
factory.client = function () {
var hub = factory.connectToHub();
return hub.client;
}
factory.server = function () {
var hub = factory.connectToHub();
return hub.server;
}
factory.start = function (fn) {
return $.connection.hub.start().done(fn);
}
return factory;
});
Schritt 5: Aktualisieren Sie app.js
var app = angular.module("app", []);
app.run(function(signalR) {
signalR.url("http://localhost:21991/signalr");
});
localhost: 21991 / signalr | Dies ist Ihre SignalR Hubs-URL
Schritt 6: Controller hinzufügen
Wechseln Sie in das Verzeichnis "/ Application / Controllers" und fügen Sie die Datei [appController.js] hinzu
app.controller("ctrl", function ($scope, signalR) {
$scope.messages = [];
$scope.user = {};
signalR.setHubName("chatHub");
signalR.client().broadcastMessage = function (name, message, time) {
var newChat = { name: name, message: message, time: time };
$scope.$apply(function() {
$scope.messages.push(newChat);
});
};
signalR.start(function () {
$scope.send = function () {
var dt = new Date();
var time = dt.getHours() + ":" + dt.getMinutes() + ":" + dt.getSeconds();
signalR.server().send($scope.user.name, $scope.user.message, time);
}
});
});
signalR.setHubName ("chatHub") | [ChatHub] (öffentliche Klasse)> ChatHub.cs
Hinweis: Fügen Sie nicht HubName mit Großbuchstaben ein, der erste Buchstabe ist Kleinbuchstabe.
signalR.client () | Versuchen Sie, eine Verbindung zu Ihren Hubs herzustellen und alle Funktionen in den Hubs zu erhalten. In diesem Beispiel haben wir "chatHub", um die Funktion "broadcastMessage ()" zu erhalten.
Schritt 7: Fügen Sie index.html im Verzeichnispfad hinzu
index.html
<!DOCTYPE html>
<html ng-app="app" ng-controller="ctrl">
<head>
<meta charset="utf-8" />
<title>SignalR Simple Chat</title>
</head>
<body>
<form>
<input type="text" placeholder="name" ng-model="user.name" />
<input type="text" placeholder="message" ng-model="user.message" />
<button ng-click="send()">send</button>
<ul>
<li ng-repeat="item in messages">
<b ng-bind="item.name"></b> <small ng-bind="item.time"></small> : {{item.message}}
</li>
</ul>
</form>
<script src="Scripts/angular.min.js"></script>
<script src="Scripts/jquery-1.6.4.min.js"></script>
<script src="Scripts/jquery.signalR-2.2.1.min.js"></script>
<script src="signalr/hubs"></script>
<script src="app.js"></script>
<script src="SignalR-factory.js"></script>
</body>
</html
Ergebnis mit Bild
Benutzer 1 (senden und empfangen)
Benutzer 2 (senden und empfangen)