一步一步学习SignalR进行实时通信_7_非代理
一步一步学习SignalR进行实时通信\_7_非代理
SignalR
前言
距离上次写博客已经一个多月了,一直想抽空写,却一直没时间写。现在紧接着要开始毕业设计了,工作的同时还要抽时间完成毕业设计,心也是有些累。由于自己是个.NET迷,自己的工作也是.net开发,老师给的毕业设计百分之八九十都是安卓java相关,虽然之前也学过但是自己还是喜欢.net开发,今天突发奇想,做个和Singalr相关的毕业设计,将自己的想法以及应用场景和老师提了下,还是得到了肯定,如果确定了,希望能将自己的毕业设计抽时间写下来能分享给大家。
所以为什么今天硬是开工继续写,也是为了尽快完成这篇文章,脱了太长时间了。
代理与非代理
今天讲的内容是非代理,那为什么不将代理呢?因为之前我们实现的所有功能都是通过代理的方法。那么代理和非代理的区别是什么呢?我也不知道
但是,据我了解代理可能会造成额外的带宽和处理器的开销,通过代理在安全性也不如非代理,它将操作直接暴露给客户端。(若有不对,请纠正)
代理的优点:简化开发。
但是非代理其实也没有想象中的困难,它只是用来不同的语法来做与代理相同的事情。
建立连接
当不用代理进行连接时,我们无需引入/Singalr/hubs或者之前我们做的一些配置,如:
<script src="Scripts/jquery-1.6.4.min.js"></script> <script src="Scripts/jquery.signalR-2.0.0.min.js"></script>
var connection = $.hubConnection("/realtime");
connection.start()
.done(function () {
// Code
});
app.MapSignalR("/realtime", new HubConfiguration())
这些我们统统不需要!
如果我们不用代理,最好的办法是禁用它们,我们可以通过以下代码配置:
public void Configuration(IAppBuilder app)
{
app.MapSignalR(new HubConfiguration()
{
EnableJavaScriptProxies = false
});
}
即使我们不用自动生成的代理类,我们也需要一个对象来调用和接受服务器的事件。
首先我们通过createHubProxy
手动创建一个代理
var connection = $.hubConnection();
var proxy = connection.createHubProxy("AlertService");
调用方法
通过invoke()
执行服务器的操作
connection.start().done(function () {
proxy.invoke("Alert", "I felt a great disturbance in the force");
});
第一个参数:执行服务器的alert方法,此参数不区分大小写
第二个参数:可以是任意类型,该参数会传递给服务器
invoke()
和start()
方法一样可以实现promise模式
proxy.invoke("divide", 100, prompt("Divisor?"))
.done(function(result) {
alert(result);
})
.fail(function(err) {
alert(err);
});
维持状态
同时我们也可以保持状态
var proxy = connection.createHubProxy("AlertService");
proxy.state.MsgId = 1;
proxy.state.UserName = "Obi Wan";
从服务器接收
我们通过on()
捕获
proxy.on("ShowAlert", function(msg) { alert(msg); });
第一个参数是服务器指定调用的方法名,第二个参数是匿名方法将被执行。
结束语
今天简单介绍一下代理与非代理的区别,下一讲将分析一个小例子来掌握。
本文发布至作业部落
参考文献
一步一步学习SignalR进行实时通信_7_非代理的更多相关文章
- 一步一步学习SignalR进行实时通信_1_简单介绍
一步一步学习SignalR进行实时通信\_1_简单介绍 SignalR 一步一步学习SignalR进行实时通信_1_简单介绍 前言 SignalR介绍 支持的平台 相关说明 OWIN 结束语 参考文献 ...
- 一步一步学习SignalR进行实时通信_8_案例2
原文:一步一步学习SignalR进行实时通信_8_案例2 一步一步学习SignalR进行实时通信\_8_案例2 SignalR 一步一步学习SignalR进行实时通信_8_案例2 前言 配置Hub 建 ...
- 一步一步学习SignalR进行实时通信_9_托管在非Web应用程序
原文:一步一步学习SignalR进行实时通信_9_托管在非Web应用程序 一步一步学习SignalR进行实时通信\_9_托管在非Web应用程序 一步一步学习SignalR进行实时通信_9_托管在非We ...
- 一步一步学习SignalR进行实时通信_5_Hub
原文:一步一步学习SignalR进行实时通信_5_Hub 一步一步学习SignalR进行实时通信\_5_Hub SignalR 一步一步学习SignalR进行实时通信_5_Hub 前言 Hub命名规则 ...
- 一步一步学习SignalR进行实时通信_6_案例
原文:一步一步学习SignalR进行实时通信_6_案例 一步一步学习SignalR进行实时通信\_6_案例1 一步一步学习SignalR进行实时通信_6_案例1 前言 类的定义 各块功能 后台 上线 ...
- 一步一步学习SignalR进行实时通信_4_Hub
原文:一步一步学习SignalR进行实时通信_4_Hub 一步一步学习SignalR进行实时通信\_4_Hub SignalR 一步一步学习SignalR进行实时通信_4_Hub 前言 创建Hub 配 ...
- 一步一步学习SignalR进行实时通信_3_通过CORS解决跨域
原文:一步一步学习SignalR进行实时通信_3_通过CORS解决跨域 一步一步学习SignalR进行实时通信\_3_通过CORS解决跨域 SignalR 一步一步学习SignalR进行实时通信_3_ ...
- 一步一步学习SignalR进行实时通信_2_Persistent Connections
原文:一步一步学习SignalR进行实时通信_2_Persistent Connections 一步一步学习SignalR进行实时通信\_2_Persistent Connections Signal ...
- 12.Linux软件安装 (一步一步学习大数据系列之 Linux)
1.如何上传安装包到服务器 有三种方式: 1.1使用图形化工具,如: filezilla 如何使用FileZilla上传和下载文件 1.2使用 sftp 工具: 在 windows下使用CRT 软件 ...
随机推荐
- 通过控件获取cell
#pragma mark - 通过控件获取cell -(UITableViewCell*)GetCellFromTableView:(UITableView*)tableView Sender:(id ...
- HTML中常见的各种位置距离以及dom中的坐标讨论
最近在学习JavaScript,特意买了一本犀牛角书来看看,尼玛一千多页,看的我头昏脑涨,翻到DOM这章节,突然记起平常在使用DOM时,碰到了好多的这个dom里面的各种宽度,高度,特意在此写一写,写的 ...
- chmod -x chmod的N种解法
声明:该文章摘自陈皓的酷壳. 问题: 如果某天你的Unix/Linux系统上的chomd命令被某人去掉了x属性(执行属性),那么,你如何恢复呢? 参考答案: 1)重新安装.对于Debian的系统: s ...
- Android(java)学习笔记228:服务(service)之绑定服务调用服务里面的方法
1.绑定服务调用服务里面的方法,图解: 步骤: (1)在Activity代码里面绑定 bindService(),以bind的方式开启服务 : bindServ ...
- VB编程技巧推荐
VB编程技巧推荐 1.zyl910的专栏——理论水平高 用VB写高效的图像处理程序 V2.0 优化分支代码——避免跳转指令堵塞流水线 2.Laviewpbt的专栏 —— 有很多算法的代码,实用性高 ...
- java常见错误的列表
ava常见错误列表: 找不到符号(symbol) 类X是public的,应该被声明在名为X.java的文件中 缺失类.接口或枚举类型 缺失X 缺失标识符 非法的表达式开头 类型不兼容 非法的方法声明; ...
- JQuery__Tab实践
刚开始学做网站的时候,是从DIV+CSS开始的,那时候不明白“幻灯片”“二级导航”等,更不明白“动态网站”.后来,需要用到幻灯片banner的时候,老师没有仔细讲解JS,就说:从网站找来,会用就好!于 ...
- javascript 动态控制复选框的选择和取消
这里就需要引入一个jquery-1.4.2.js 就行了,因为用到了里面的选择器 <html> <head> <script type="text/javasc ...
- asp.net 微信公众平台我也来搞一搞(看看和大家的有什么不一样)
去年10月份左右接触的微信,今年又要在上面做新的改动(好烦人,为什么我这么懒),小菜用了2天的工作日,做了一个微信解析器,方便大家调用. 好处: 1.屌丝们不用再去做微信验证. 2.屌丝们不用去解析x ...
- Objective-C中的内存管理——手动内存管理
一.引用计数(retainCount) 1.内存的申请 alloc和new是Objective-C语言中申请内存的两种常用方式. 当我们向一个类对象发送一个alloc消息的时候,其会向操作系统在堆中申 ...