Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in den Multi-Terminal-Nachrichten-Push-Dienst SignalR Self Host

Einführung in den Multi-Terminal-Nachrichten-Push-Dienst SignalR Self Host

零下一度
零下一度Original
2017-07-02 10:53:591585Durchsuche

In diesem Artikel wird hauptsächlich der dritte Artikel über Multi-Terminal-Nachrichten-Push-Dienste wie SignalR Self Host+MVC vorgestellt. Interessierte Freunde können darauf verweisen

1. Überblick

Ich war in letzter Zeit sehr beschäftigt mit Projekten und fühlte mich auch ein wenig unwohl, als ich letzte Nacht ins Bett ging Ich hatte keine gute Pause und habe nicht viel Zeit, um einen Blog zu schreiben. Als mich heute ein Freund fragte, wann ich per Web-Messaging gesendete Artikel veröffentlichen könne, war ich noch damit beschäftigt, das Projekt zu überarbeiten Ich habe meine Mittags- und Mittagspause genutzt, um die geschuldeten Artikel schnell nachzuholen.

Dieses Kapitel ist hauptsächlich eine einfache Demo zur Implementierung der Multi-Terminal-Nachrichtenkommunikation. Die Webseite von MVC sendet Informationen an die Steuerungsseite usw.

2. Erstellen Sie einen Webclient

1. Erstellen Sie eine neue WebClient-Lösung

2 Erstellen Sie ein neues Projekt mit dem Namen Clinet mvc unter der Lösung

3. Wählen Sie die entsprechende Projektvorlage entsprechend Ihrer tatsächlichen Situation aus. Wählen Sie hier zu Demonstrationszwecken Internetanwendung

4. Checken Sie in der Paketmanager-Konsole in vs ein und geben Sie den folgenden Code ein:


Install-Package Microsoft.AspNet.SignalR.JS

5. Ändern Sie den Dateicode „Index.cshtml“ im Homge-Ordner unter „Ansichten“ wie folgt:


@{
  Layout = null;
}

<h1>流程演示</h1>
<input type="hidden" id="displayname" />
<h2 id="thisname"></h2>

<select id="username" style="width: 100px;">
</select>
<br />
<br />
<input type="text" id="message" />
<input id="send" type="button" value="发送" />
<p>
  <h1 id="messgaeInfo"></h1>
</p>
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Scripts/jquery.signalR-2.2.1.min.js"></script>
<script src="http://localhost:10086/signalr/hubs"></script>
<script type="text/javascript">
  $(function () {
    $.connection.hub.url = &#39;http://localhost:10086/signalr&#39;;
    var work = $.connection.IMHub;
  
    $(&#39;#displayname&#39;).val(prompt(&#39;请输入昵称:&#39;, &#39;&#39;));
    $(&#39;#thisname&#39;).text(&#39;当前用户:&#39; + $(&#39;#displayname&#39;).val());
    var fromUser = $(&#39;#displayname&#39;).val();

    //对应后端的SendMessage函数,消息接收函数
    work.client.receivePrivateMessage = function (user, message) {
      //alert(message);
      $(&#39;#messgaeInfo&#39;).append(message + &#39;</br>&#39;);
    };

    //后端SendLogin调用后,产生的loginUser回调
    work.client.onConnected = function (connnectId, userName, OnlineUsers) {
      reloadUser(OnlineUsers);
    };

    //hub连接开启
    $.connection.hub.start().done(function () {
      var username = $(&#39;#displayname&#39;).val();
      //发送上线信息
      work.server.register(username);

      //点击按钮,发送消息
      $(&#39;#send&#39;).click(function () {
        var friend = $(&#39;#username&#39;).val();
        //调用后端函数,发送指定消息
        work.server.sendPrivateMessage(friend, $("#message").val());
      });
    });
  });

  //重新加载用户列表
  var reloadUser = function (userlist) {
    $("#username").empty();
    for (i = 0; i < userlist.length; i++) {
      $("#username").append("<option value=" + userlist[i].UserName + ">" + userlist[i].UserName + "</option>");
    }
  }
</script>

6. Bevor Sie unser Web-Client-Projekt ausführen, führen Sie zunächst unser Serve-Konsolen-Projekt aus den beiden vorherigen Kapiteln aus und führen Sie dann F5 aus, um das Web-Client-Projekt auszuführen. Geben Sie den Benutzernamen a ein: Benutzeranmeldung

7. Öffnen Sie dann wie in den obigen Schritten einen anderen Browser, geben Sie Benutzer b ein, um sich anzumelden, und Benutzer a wählt b aus im Dropdown-Element (Dropdown-Option fügt automatisch neue Benutzer hinzu, wenn sich ein Benutzer anmeldet und Nachrichten zum Testen aneinander sendet). >

8. Wenn a, Es gibt kein Problem bei der Nachrichtenübertragung zwischen b, was beweist, dass die Nachrichtenübertragung auf der Webseite erfolgreich ist. Öffnen Sie zu diesem Zeitpunkt das Client-Konsolenprojekt in unserem vorherigen Kapitel und führen Sie es aus Clinet.exe im Papierkorb unter dem Projekt, checken Sie die beiden Programme ein und geben Sie den Anmeldenamen c , b ein

9. Verwenden Sie Benutzer c, um eine Nachricht „Hallo a“ an a zu senden. Der Effekt ist wie folgt:

10 Verwenden Sie Benutzer c, um eine Nachricht „Hallo b“ an Benutzer b zu senden! Der Effekt ist wie folgt und beweist, dass die Steuerungsseite erfolgreich eine Nachricht an die Webseite sendet

11. Verwenden Sie Benutzer d, um eine Nachricht an Benutzer c zu senden, wie unten gezeigt , um zu beweisen, dass das Kontrollende eine Nachricht erfolgreich sendet

12. Verwenden Sie a, um eine Nachricht an c zu senden, wie unten gezeigt

13. Verwenden Sie b, um eine Nachricht an d zu senden, wie unten gezeigt. Wie in der Abbildung gezeigt, ist bewiesen, dass Web——>control erfolgreich Nachrichten sendet

Wie oben gezeigt, ist bewiesen, dass durch die Verwendung von SignalR zur Erstellung eines eigenen Dienstes eine Multi-Terminal-Kommunikation realisiert werden kann und SignalR in einen separaten Kommunikationsdienst umgewandelt und von anderen Projekten getrennt und entkoppelt werden kann.

Ich werde RabbitMQ weiter optimieren und integrieren, wenn ich in Zukunft Zeit habe.

Das Schreiben ist nicht gut. Bitte geben Sie mir einen Rat 🎜>

Das obige ist der detaillierte Inhalt vonEinführung in den Multi-Terminal-Nachrichten-Push-Dienst SignalR Self Host. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen 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