原文:一步一步学习SignalR进行实时通信_7_非代理

一步一步学习SignalR进行实时通信\_7_非代理

SignalR

前言

距离上次写博客已经一个多月了,一直想抽空写,却一直没时间写。现在紧接着要开始毕业设计了,工作的同时还要抽时间完成毕业设计,心也是有些累。由于自己是个.NET迷,自己的工作也是.net开发,老师给的毕业设计百分之八九十都是安卓java相关,虽然之前也学过但是自己还是喜欢.net开发,今天突发奇想,做个和Singalr相关的毕业设计,将自己的想法以及应用场景和老师提了下,还是得到了肯定,如果确定了,希望能将自己的毕业设计抽时间写下来能分享给大家。

所以为什么今天硬是开工继续写,也是为了尽快完成这篇文章,脱了太长时间了。

代理与非代理

今天讲的内容是非代理,那为什么不将代理呢?因为之前我们实现的所有功能都是通过代理的方法。那么代理和非代理的区别是什么呢?我也不知道

但是,据我了解代理可能会造成额外的带宽和处理器的开销,通过代理在安全性也不如非代理,它将操作直接暴露给客户端。(若有不对,请纠正)

代理的优点:简化开发。

但是非代理其实也没有想象中的困难,它只是用来不同的语法来做与代理相同的事情。

建立连接

当不用代理进行连接时,我们无需引入/Singalr/hubs或者之前我们做的一些配置,如:

  1. <script src="Scripts/jquery-1.6.4.min.js"></script> <script src="Scripts/jquery.signalR-2.0.0.min.js"></script>
  1. var connection = $.hubConnection("/realtime");
  2. connection.start()
  3. .done(function () {
  4. // Code
  5. });
  1. app.MapSignalR("/realtime", new HubConfiguration())

这些我们统统不需要!

如果我们不用代理,最好的办法是禁用它们,我们可以通过以下代码配置:

  1. public void Configuration(IAppBuilder app)
  2. {
  3. app.MapSignalR(new HubConfiguration()
  4. {
  5. EnableJavaScriptProxies = false
  6. });
  7. }

即使我们不用自动生成的代理类,我们也需要一个对象来调用和接受服务器的事件。

首先我们通过createHubProxy手动创建一个代理

  1. var connection = $.hubConnection();
  2. var proxy = connection.createHubProxy("AlertService");

调用方法

通过invoke()执行服务器的操作

  1. connection.start().done(function () {
  2. proxy.invoke("Alert", "I felt a great disturbance in the force");
  3. });

第一个参数:执行服务器的alert方法,此参数不区分大小写

第二个参数:可以是任意类型,该参数会传递给服务器

invoke()start()方法一样可以实现promise模式

  1. proxy.invoke("divide", 100, prompt("Divisor?"))
  2. .done(function(result) {
  3. alert(result);
  4. })
  5. .fail(function(err) {
  6. alert(err);
  7. });

维持状态

同时我们也可以保持状态

  1. var proxy = connection.createHubProxy("AlertService");
  2. proxy.state.MsgId = 1;
  3. proxy.state.UserName = "Obi Wan";

从服务器接收

我们通过on()捕获

  1. proxy.on("ShowAlert", function(msg) { alert(msg); });

第一个参数是服务器指定调用的方法名,第二个参数是匿名方法将被执行。

结束语

今天简单介绍一下代理与非代理的区别,下一讲将分析一个小例子来掌握。

本文发布至作业部落

参考文献

SignalR Programming in Microsoft ASP.NET pdf 下载

一步一步学习SignalR进行实时通信_7_非代理的更多相关文章

  1. 一步一步学习SignalR进行实时通信_1_简单介绍

    一步一步学习SignalR进行实时通信\_1_简单介绍 SignalR 一步一步学习SignalR进行实时通信_1_简单介绍 前言 SignalR介绍 支持的平台 相关说明 OWIN 结束语 参考文献 ...

  2. 一步一步学习SignalR进行实时通信_8_案例2

    原文:一步一步学习SignalR进行实时通信_8_案例2 一步一步学习SignalR进行实时通信\_8_案例2 SignalR 一步一步学习SignalR进行实时通信_8_案例2 前言 配置Hub 建 ...

  3. 一步一步学习SignalR进行实时通信_9_托管在非Web应用程序

    原文:一步一步学习SignalR进行实时通信_9_托管在非Web应用程序 一步一步学习SignalR进行实时通信\_9_托管在非Web应用程序 一步一步学习SignalR进行实时通信_9_托管在非We ...

  4. 一步一步学习SignalR进行实时通信_5_Hub

    原文:一步一步学习SignalR进行实时通信_5_Hub 一步一步学习SignalR进行实时通信\_5_Hub SignalR 一步一步学习SignalR进行实时通信_5_Hub 前言 Hub命名规则 ...

  5. 一步一步学习SignalR进行实时通信_6_案例

    原文:一步一步学习SignalR进行实时通信_6_案例 一步一步学习SignalR进行实时通信\_6_案例1 一步一步学习SignalR进行实时通信_6_案例1 前言 类的定义 各块功能 后台 上线 ...

  6. 一步一步学习SignalR进行实时通信_4_Hub

    原文:一步一步学习SignalR进行实时通信_4_Hub 一步一步学习SignalR进行实时通信\_4_Hub SignalR 一步一步学习SignalR进行实时通信_4_Hub 前言 创建Hub 配 ...

  7. 一步一步学习SignalR进行实时通信_3_通过CORS解决跨域

    原文:一步一步学习SignalR进行实时通信_3_通过CORS解决跨域 一步一步学习SignalR进行实时通信\_3_通过CORS解决跨域 SignalR 一步一步学习SignalR进行实时通信_3_ ...

  8. 一步一步学习SignalR进行实时通信_2_Persistent Connections

    原文:一步一步学习SignalR进行实时通信_2_Persistent Connections 一步一步学习SignalR进行实时通信\_2_Persistent Connections Signal ...

  9. 12.Linux软件安装 (一步一步学习大数据系列之 Linux)

    1.如何上传安装包到服务器 有三种方式: 1.1使用图形化工具,如: filezilla 如何使用FileZilla上传和下载文件 1.2使用 sftp 工具: 在 windows下使用CRT 软件 ...

随机推荐

  1. 设计模式21---设计模式之享元模式(Flyweight)(结构型)

    1.讲解享元模式(结构型) 1.1享元模式定义 运用共享技术有效地支持大量细粒度对象. 享元:把内部状态共享出来 1.2享元模式要点 重点在于分离变与不变. 把一个对象的状态分为内部状态和外部状态,内 ...

  2. HDU 1548 A strange lift 搜索

    A strange lift Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  3. [Angular 2] Using ng-model for two-way binding

    Two-way binding still exists in Angular 2 and ng-model makes it simple. The syntax is a combination ...

  4. Android 开源项目android-open-project解析之(三) ScrollView,TimeView,TipView,FlipView

    九.ScrollView Discrollview 支持滚动时Item淡入淡出,平移,缩放效果的ScrollView 项目地址:https://github.com/flavienlaurent/di ...

  5. Git 版本控制工具使用介绍------Windows系统下使用

    Git 是用于 Linux内核开发的版本控制工具.与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持(wingeddevil注:这得分是用什 ...

  6. 转载:C#之接口简介

    原文地址 http://www.cnblogs.com/michaelxu/archive/2007/03/29/692021.html 感谢博主分享! 什么是接口?其实,接口简单理解就是一种约定,使 ...

  7. C#_事件委托

    CarDealer类 事件发布程序 using System; using System.Collections.Generic; using System.Linq; using System.Te ...

  8. java常见错误的列表

    ava常见错误列表: 找不到符号(symbol) 类X是public的,应该被声明在名为X.java的文件中 缺失类.接口或枚举类型 缺失X 缺失标识符 非法的表达式开头 类型不兼容 非法的方法声明; ...

  9. HTML5 文件域+FileReader 读取文件(一)

    在HTML5以前,HTML的文件上传域的功能具有很大的局限性,这种局限性主要体现在如下两点: 每次只能选择一个文件进行上传 客户端代码只能获取被上传文件的文件路径,无法访问实际的文件内容 一.File ...

  10. Linux和windows下清除svn保存的账号密码信息

    linux是什么用户登录就是什么用户的home下,如root用户就是/root,如果xiangdong就是/home/xiangdong 用Svn时会有一种需求是需要换个帐号测试一下什么的,但往往有缓 ...