使用 ASP.NET SignalR实现实时通讯

ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程。实时 Web 功能是指这样一种功能:当所连接的客户端变得可用时服务器代码可以立即向其推送内容,而不是让服务器等待客户端请求新的数据。

  官网:http://signalr.net/

  下载:install-package Microsoft.AspNet.SignalR

  使用 ASP.NET SignalR实现实时通讯_第1张图片

 

  本节将简单快速介绍

  • 实现原理
  • Hello World
  • 快速分析
  • 注意事项

 

实现原理

  1. 如果浏览器<=Internet Explorer 8,用长轮询的方式
  2. 如果配置中指定了使用jsonp,则会使用长轮询的方式
  3. 如何需要创建跨域连接,将会如使用WebSocket,如果一下条件满足的话(否则用长轮询)
    1. 客户端支持WebSocket
    2. 服务端支持WebSocket
    3. 客户端支持Cross-Origin Resource Sharing

 

基于SignalR(SR)的实现原理,所以SR在客户端浏览器IE8以上基本都是完全兼容的。可以说完全支持jQuery 1.6.4的浏览器就能支持SignalR。

 

Hello World

创建空的Asp.Net项目

使用 ASP.NET SignalR实现实时通讯_第2张图片

 

安装

  install-package Microsoft.AspNet.SignalR

  install-package bootstrap

使用 ASP.NET SignalR实现实时通讯_第3张图片

 

添加一个集线器类

复制代码
public class ChatHub : Hub
{
    public void Send(string name, string message)
    {
        // Call the broadcastMessage method to update clients.
        Clients.All.broadcastMessage(name, message);
    }
}
复制代码

 

添加一个OWIN Startup类

复制代码
[assembly: OwinStartup(typeof(SignalRChart.Startup))]
 
namespace SignalRChart
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // 有关如何配置应用程序的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkID=316888
            app.MapSignalR();
        }
    }
}
复制代码

 

添加一个index.html

1.导入js

复制代码


<script src="Scripts/jquery-1.9.1.min.js">script>

<script src="Scripts/jquery.signalR-2.2.0.min.js">script>

<script src="signalr/hubs">script>
复制代码

 

2.hub

复制代码
// Declare a proxy to reference the hub.
var chat = $.connection.chatHub;
 
// Call the Send method on the hub.
chat.server.send(name, message);
 
 // Create a function that the hub can call to broadcast messages.
chat.client.broadcastMessage = function (name, message) {
}
复制代码

 

快速分析

Hub代码

使用 ASP.NET SignalR实现实时通讯_第4张图片

 

Client代码

 

使用 ASP.NET SignalR实现实时通讯_第5张图片

 

 

1.发送给所有客户端
Clients.All.onMsg

2.发送给单一客户端
Clients.Client(_clientID).onMsg 

3.发送给其他客户端
Clients.AllExcept(_clientID).onMsg
Clients.Ohther.onMsg

4.发送给当前客户端
Clients.Caller.onMsg

 

 

注意事项

In ASP.NET MVC 4 you can do the following:



If you're writing an ASP.NET MVC 3 application, make sure that you are using Url.Content for your script references:

Chat.cshtml頁面代碼:

@{
    ViewBag.Title = "Chat";
}

Chat

@section scripts { }

你可能感兴趣的:(C#,ASP.NET,MVC,JQuery)