温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Asp.net 中怎么利用SignalR创建一个实时聊天应用程序

发布时间:2021-07-17 14:38:18 来源:亿速云 阅读:205 作者:Leah 栏目:开发技术

今天就跟大家聊聊有关Asp.net 中怎么利用SignalR创建一个实时聊天应用程序,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

创建一个 ASP.NET MVC 5 应用程序,安装 SignalR 库,添加和创建聊天应用程序。

1).在 Visual Studio 中,创建一个 C# ASP.NET 应用程序的目标.NET 框架 4.5,命名为 SignalRChat,并单击确定.

Asp.net 中怎么利用SignalR创建一个实时聊天应用程序

2).在New ASP.NET Project对话框中,选择MVC和单击更改身份验证

Asp.net 中怎么利用SignalR创建一个实时聊天应用程序

注意:如果应用程序选择一个不同的身份验证提供程序,将创建Startup.cs类,这里选择无身份验证所有我们自己创建一个Startup类。

3).安装SignalR
打开工具 |库包管理器 |程序包管理器控制台,然后运行以下命令。此步骤向项目中添加一组脚本文件和启用那么 SignalR 功能的程序集引用。

输入:install-package Microsoft.AspNet.SignalR

Asp.net 中怎么利用SignalR创建一个实时聊天应用程序

安装完成,Scripts文件夹下出现了这样的文件:

Asp.net 中怎么利用SignalR创建一个实时聊天应用程序

4).创建Startup类:

在根目录下创建类,命名为Startup:

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();
  }
 }
}

5).在项目中添加Hubs文件夹,添加现有项:
鼠标右键单击Hubs文件夹,请单击添加|新项目,选择Visual C# |Web |那么 SignalR节点在已安装窗格中,从中心窗格中,选择那么 SignalR 集线器类 (v2)并创建名为ChatHub.cs。

Asp.net 中怎么利用SignalR创建一个实时聊天应用程序

修改代码:

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).编辑HomeController类发现在Controllers/HomeController.cs中,将以下方法添加到类。此方法返回的聊天的视图,您将在后面的步骤中创建。

public ActionResult Chat()

{

 return View();

}

7).在Chat()方法上右键>添加视图页

Asp.net 中怎么利用SignalR创建一个实时聊天应用程序

修改代码为:

@{
 ViewBag.Title = "Chat";
}
<h3>Chat</h3>
<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中 
    $('#discussion').append('<li><strong>' + htmlEncode(name)
     + '</strong>: ' + htmlEncode(message) + '</li>');
   };
   // Get the user name and store it to prepend to messages.
   $('#displayname').val(prompt('Enter your name:', ''));
   // Set initial focus to message input box.
   $('#message').focus();
   //把connection打开 
   $.connection.hub.start().done(function () {
    $('#sendmessage').click(function () {
     //调用叫server端的Hub对象,将#message数据传给server 
     chat.server.send($('#displayname').val(), $('#message').val());
     $('#message').val('').focus();
    });
   });
  });
  // This optional function html-encodes messages for display in the page.
  function htmlEncode(value) {
   var encodedValue = $('<div />').text(value).html();
   return encodedValue;
  }
 </script>
}

看完上述内容,你们对Asp.net 中怎么利用SignalR创建一个实时聊天应用程序有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI