Asp.Net Core + SignalR 实现实时通信

一、搭建项目

1、创建一个ASP.NET Core MVC 项目

Asp.Net Core + SignalR 实现实时通信_第1张图片
image

2、nuget 下载和安装 MicroSoft.AspNetCore.SignalR

Asp.Net Core + SignalR 实现实时通信_第2张图片
image

vs提示版本冲突

Asp.Net Core + SignalR 实现实时通信_第3张图片
image

这时我们选择低版本即可

Asp.Net Core + SignalR 实现实时通信_第4张图片
image
Asp.Net Core + SignalR 实现实时通信_第5张图片
image

二、SignalR配置

1、在model中创建一个类MyHub 代码如下

4624570-c5d0c98492470c64.gif
image

  1. public class MyHub:Hub
  2. {
  3. public async Task SendMessage(string user, string message)
  4. {
  5. await Clients.All.SendAsync("ReceiveMessage", user+"["+DateTime.Now.ToLongTimeString()+"]", message);
  6. }
  7. public async Task SendMessageToUser(string user, string message)
  8. {
  9. await Clients.Client(Context.ConnectionId).SendAsync("ReceiveMessage", user + ":" + DateTime.Now.ToLongTimeString()+"]", message);
  10. }
  11. }

View Code

2、在Startup中注入SignalR并在Configure中配置路由

Asp.Net Core + SignalR 实现实时通信_第6张图片
image
Asp.Net Core + SignalR 实现实时通信_第7张图片
image

3、右键项目名=>添加=>添加客户端库

Asp.Net Core + SignalR 实现实时通信_第8张图片
image
  • 对于“提供程序”选择unpkg。

  • 对于“库”输入 @aspnet/[email protected] (@1.0.4 是根据 nuget SignalR的本本定的)。

  • 选择“选择特定文件”,展开“dist/browser”文件夹,然后选择“signalr.js”和“signalr.min.js”。

  • 将“目标位置”设置为 wwwroot/lib/signalr/,然后选择“安装”。

Asp.Net Core + SignalR 实现实时通信_第9张图片
image
Asp.Net Core + SignalR 实现实时通信_第10张图片
image

配置完毕。

三、编码实现

1、修改Views/Home中的Index.cshtml如下

4624570-3b436c475e384542.gif
image

  1.  
  2.  
  3. User..........

  4. Message...

  •  
    • View Code

      2、在js文件见创建一个js文件 chat.js

      4624570-75047f6fc9480ed7.gif
      image

      1. var connection = new signalR.HubConnectionBuilder().withUrl("/chatHub").build();

      2. connection.on("ReceiveMessage", function (user, message) {

      3. var msg = message.replace(/&/g, "&").replace(//g, ">");

      4. var encodedMsg = user + " says " + msg;

      5. var li = document.createElement("li");

      6. li.textContent = encodedMsg;

      7. document.getElementById("messagesList").appendChild(li);

      8. });

      9. connection.start().catch(function (err) {

      10. return console.error(err.toString());

      11. });

      12. document.getElementById("sendButton").addEventListener("click", function (event) {

      13. var user = document.getElementById("userInput").value;

      14. var message = document.getElementById("messageInput").value;

      15. connection.invoke("SendMessage", user, message).catch(function (err) {

      16. return console.error(err.toString());

      17. });

      18. event.preventDefault();

      19. });

      View Code

      3、Ctrl+F5 运行出两个网页

      Asp.Net Core + SignalR 实现实时通信_第11张图片
      image
      好书推荐、视频分享,与您一起进步

      你可能感兴趣的:(Asp.Net Core + SignalR 实现实时通信)