Microsoft ASP.NET SignalR

SignalR类似与JavaScript实时框架,如Socket.IO。SignalR能够完成客户端向服务器的异步通信,并同时支持服务器向浏览器客户端推送事件。SignalR的连接通过日益流行的WebSockets API完成,而如果WebSockets无法使用,它会透明地回落为长轮询技术(long-polling technique)。如果开发人员想使用Signal,需要在客户端层使用像jQuery的JavaScript框架,并在服务端层使用.NET代码编写应用和服务。SignalR具有多种编程模型(PersistentConnectionsHubs),它为开发人员提供了连接、消息接收群以及事件处理器的不同层次的访问。

SignalR显示已经可在单台机器上扩展至上万个连接,同时可以通过service bus和redis 以及sql server 实现可扩展的集群部署,具体参看Microsoft ASP.NET SignalR

我们可以下载ASP.NET 2012 Fall Update安装包(http://www.microsoft.com/en-us/download/details.aspx?id=35493),安装完毕以后,就可以在 Visual Studio里看到新的项目模板。

VsIntegrationSignalR

SignalR 包括一些针对不同功能的类库,下载安装可以看到一下几个主要项目:

  • Microsoft.AspNet.SignalR – meta package (use this)
  • Microsoft.AspNet.SignalR.Client – .NET 4 and WinRT client
  • Microsoft.AspNet.SignalR.JS – The Javascript client.
  • Microsoft.AspNet.SignalR.Core – Core server package with no host implementation
  • Microsoft.AspNet.SignalR.Hosting.AspNet – The ASP.NET host
  • Microsoft.AspNet.SignalR.Hosting.Utils – utilities for signalr (signalr.exe)
  • Microsoft.AspNet.SignalR.Redis – Redis message bus implementation
  • Microsoft.AspNet.SignalR.ServiceBus – Service bus message bus implementation

GItHUb上的地址:https://github.com/SignalR/SignalR

安装也很简单,另外一种方式可以通过控制台安装:To install Microsoft ASP.NET SignalR, run the following command in the Package Manager Console

PM> Install-Package Microsoft.AspNet.SignalR

ASP.NET SignalR 目前还在持续不断更新完善中,这个框架目前还没正式集成到.NET框架里。不过作为Web开发,实时同时,客户端和服务端双工通信这也是非常重要的需求。无论是传统Web网站还是移动平台,这个框架应该都会对我们的开发工作带来很大便利。

SignalR Hub Authorization

Securing SignalR to your site’s users

Scaling SignalR with Redis

Running SignalR on Mono

Using SignalR in MonoTouch and Mono for Android Apps

SignalR really changes everything

Real Time Commenting using SignalR and XSLT

基于SignalR的超线程上载器

Asp.Net SignalR Chat Room

(原创)利用SignalR实现IOS即时通讯(A篇服务端)

使用SignalR实时显示淘宝买家信誉及中差评信息

[Xamarin] iOS 與Android結合SignalR

SignalR -- server push 利器

http://www.codeproject.com/Articles/584845/SignalR-as-a-Service

 Pushing ETW events through SignalR

Comet:基于 HTTP 长连接的“服务器推”技术解析

ASP.NET SignalR Basis Step by Step (Part 1)

ASP.NET SignalR Basis Step by Step (Part 2)

Debug / Inspect WebSocket traffic with Fiddler

Azure 的 ASP.NET SignalR

SignalR 再次超越你對 Web 的想像 - 建立即時互動的 Web

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程。实时 Web 功能是指这样一种功能:当所连接的客户端变得可用时服务器代码可以立即向其推送内容,而不是让服务器等待客户端请求新的数据。       SignalR类似与JavaScript实时框架,如Socket.IO。SignalR能够完成客户端向服务器的异步通信,并同时支持服务器向浏览器客户端推送事件。SignalR的连接通过日益流行的WebSockets API完成,而如果WebSockets无法使用,它会透明地回落为长轮询技术(long-polling technique)。如果开发人员想使用Signal,需要在客户端层使用像jQuery的JavaScript框架,并在服务端层使用.NET代码编写应用和服务。SignalR具有多种编程模型(PersistentConnections 和Hubs),它为开发人员提供了连接、消息接收群以及事件处理器的不同层次的访问。            SignalR显示已经可在单台机器上扩展至上万个连接,同时可以通过service bus和redis 以及sql server 实现可扩展的集群部署,具体参看Microsoft ASP.NET SignalRSignalR 包括一些针对不同功能的类库,下载安装可以看到一下几个主要项目:Microsoft.AspNet.SignalR – meta package (use this)Microsoft.AspNet.SignalR.Client – .NET 4 and WinRT clientMicrosoft.AspNet.SignalR.JS – The Javascript client.Microsoft.AspNet.SignalR.Core – Core server package with no host implementationMicrosoft.AspNet.SignalR.Hosting.AspNet – The ASP.NET hostMicrosoft.AspNet.SignalR.Hosting.Utils – utilities for signalr (signalr.exe)Microsoft.AspNet.SignalR.Redis – Redis message bus implementationMicrosoft.AspNet.SignalR.ServiceBus – Service bus message bus implementationGItHUb上的地址:https://github.com/SignalR/SignalR示例效果:安装也很简单,另外一种方式可以通过控制台安装:To install Microsoft ASP.NET SignalR, run the following command in the Package Manager ConsolePM> Install-Package Microsoft.AspNet.SignalR     ASP.NET SignalR 目前还在持续不断更新完善中,这个框架目前还没正式集成到.NET框架里。不过作为Web开发,实时同时,客户端和服务端双工通信这也是非常重要的需求。无论是传统Web网站还是移动平台,这个框架应该都会对我们的开发工作带来很大便利。SignalR Hub AuthorizationSecuring SignalR to your site’s usersScaling SignalR with RedisRunning SignalR on MonoUsing SignalR in MonoTouch and Mono for Android Apps SignalR really changes everythingReal Time Commenting using SignalR and XSLT基于SignalR的超线程上载器Asp.Net SignalR Chat Room(原创)利用SignalR实现IOS即时通讯(A篇服务端)使用SignalR实时显示淘宝买家信誉及中差评信息[Xamarin] iOS 與Android結合SignalRSignalR -- server push 利器http://www.codeproject.com/Articles/584845/SignalR-as-a-Service Pushing ETW events through SignalRComet:基于 HTTP 长连接的“服务器推”技术解析ASP.NET Signa
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Web; namespace SignalR.通讯 { public class iHub : iHubBase { public override Task OnConnected() { // 查询用户 var user = 自我意识.你们.SingleOrDefault(u => u.ContextId == Context.ConnectionId); if (user != null) return base.OnConnected(); user = new 线程(Context.ConnectionId); user.目的 += User_目的事件; 自我意识.你们.Add(user); Clients.Client(Context.ConnectionId).addMessage("请输入用户姓名 ", Context.ConnectionId); return base.OnConnected(); } private void User_目的事件(object sender, 目的事件参数 e) { var user = (线程)sender; if (e.类型 == 目的事件类型.说话) { if (user != null) { Clients.Client(user.ContextId).addMessage("电脑说:" + e.参一+ e.参二, user.ContextId); } } else if (e.类型 == 目的事件类型.学习 || e.类型 == 目的事件类型.认知) { Clients.Client(user.ContextId).doclass(e.参一, e.参二); } else if (e.类型 == 目的事件类型.意识) { Clients.Client(user.ContextId).addIdea(e.参一, e.参二); } } /// <summary> /// 获取用户名和自己的唯一编码 /// </summary> public void GetName(string 姓名) { // 查询用户。 var user = 自我意识.你们.SingleOrDefault(u => u.ContextId == Context.ConnectionId); if (user != null) { user.姓名 = 姓名; Clients.Client(Context.ConnectionId).showNameAndId(user.姓名, Context.ConnectionId); //读取用户个性数据 } GetOnlineUserList(); } public override Task OnReconnected() { // 查询用户 var user = 自我意识.你们.SingleOrDefault(u => u.ContextId == Context.ConnectionId); if (user != null) return base.OnReconnected(); user = new 线程(Context.ConnectionId); user.目的 += User_目的事件; 自我意识.你们.Add(user); //自动重新登陆 Clients.Client(Context.ConnectionId).addMessage("重新连接。。。 ", Context.ConnectionId); GetOnlineUserList(); return base.OnReconnected(); } /// <summary> /// 重写断开连接事件 /// 用户断开连接后,需要移除在线人们 /// </summary> /// <param name="stopCalled"></param> /// <returns></returns> public override Task OnDisconnected(bool stopCalled) { var user = 自我意识.你们.FirstOrDefault(u => u.ContextId == Context.ConnectionId); //判断用户是否存在,存在则删除 if (user != null) { 自我意识.你们.Remove(user); } //更新所有用户的列表 GetOnlineUserList(); return base.OnDisconnected(stopCalled); } /// <summary> /// 获取所有在线用户 /// </summary> public void GetOnlineUserList() { // var item = from a in 自我意识.人们 select new { a.印象.姓名, a.ContextId }; //var jsondata = JsonConvert.SerializeObject(item.ToList()); // Clients.All.getOnlineUserlist(jsondata);// 调用客户端的getOnlineUserlist来获得在线人们 } /// <summary> /// 发送消息 /// </summary> /// <param name="contextId">发送给用户的ContextId</param> /// <param name="message">发送的消息内容</param> public void SendMessage(string contextId, string message) { 线程 你 = 自我意识.你们.FirstOrDefault(u => u.ContextId == Context.ConnectionId); /* // 判断用户是否存在,存在则发送 if (user != null) { // 1V1 聊天,需要把消息往这2个客户端发送 // 给指定用户发送,把自己的ID传过去 // Clients.Client(contextId).addMessage(message + " " + DateTime.Now, Context.ConnectionId); // 给自己发送,把用户的ID传给自己 Clients.Client(Context.ConnectionId).addMessage(message + " " + DateTime.Now, contextId); } else { // Clients.Client(Context.ConnectionId).showMessage("该用户已离线"); } */ if (你 == null) { //重新连接 } if (你.姓名.Equals(string.Empty)) { GetName(message); Clients.Client(Context.ConnectionId).addMessage("用户" + 你.姓名 + "你好", contextId); } else { Clients.Client(Context.ConnectionId).addMessage(你.姓名 + ":" + message + " " + DateTime.Now, contextId); //开始正式聊天 你.输入(message); } } } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值