一步一步学习SignalR进行实时通信_7_非代理
2015-12-27 23:06
323 查看
原文:一步一步学习SignalR进行实时通信_7_非代理
一步一步学习SignalR进行实时通信\_7_非代理
一步一步学习SignalR进行实时通信_7_非代理
前言
代理与非代理
建立连接
调用方法
维持状态
从服务器接收
结束语
参考文献
所以为什么今天硬是开工继续写,也是为了尽快完成这篇文章,脱了太长时间了。
但是,据我了解代理可能会造成额外的带宽和处理器的开销,通过代理在安全性也不如非代理,它将操作直接暴露给客户端。(若有不对,请纠正)
代理的优点:简化开发。
但是非代理其实也没有想象中的困难,它只是用来不同的语法来做与代理相同的事情。
[/code]
[/code]
[/code]这些我们统统不需要!
如果我们不用代理,最好的办法是禁用它们,我们可以通过以下代码配置:
[/code]即使我们不用自动生成的代理类,我们也需要一个对象来调用和接受服务器的事件。
首先我们通过
[/code]
[/code]
第一个参数:执行服务器的alert方法,此参数不区分大小写
第二个参数:可以是任意类型,该参数会传递给服务器
[/code]
[/code]
[/code]
第一个参数是服务器指定调用的方法名,第二个参数是匿名方法将被执行。
今天简单介绍一下代理与非代理的区别,下一讲将分析一个小例子来掌握。
本文发布至作业部落
一步一步学习SignalR进行实时通信\_7_非代理
SignalR
一步一步学习SignalR进行实时通信_7_非代理
前言
代理与非代理
建立连接
调用方法
维持状态
从服务器接收
结束语
参考文献
前言
距离上次写博客已经一个多月了,一直想抽空写,却一直没时间写。现在紧接着要开始毕业设计了,工作的同时还要抽时间完成毕业设计,心也是有些累。由于自己是个.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>
[/code]
var connection = $.hubConnection("/realtime");
connection.start()
.done(function () {
// Code
});
[/code]
app.MapSignalR("/realtime", new HubConfiguration())
[/code]这些我们统统不需要!
如果我们不用代理,最好的办法是禁用它们,我们可以通过以下代码配置:
public void Configuration(IAppBuilder app)
{
app.MapSignalR(new HubConfiguration()
{
EnableJavaScriptProxies = false
});
}
[/code]即使我们不用自动生成的代理类,我们也需要一个对象来调用和接受服务器的事件。
首先我们通过
createHubProxy手动创建一个代理
var connection = $.hubConnection();
var proxy = connection.createHubProxy("AlertService");
[/code]
调用方法
通过invoke()执行服务器的操作
connection.start().done(function () {
proxy.invoke("Alert", "I felt a great disturbance in the force");
});
[/code]
第一个参数:执行服务器的alert方法,此参数不区分大小写
第二个参数:可以是任意类型,该参数会传递给服务器
invoke()和
start()方法一样可以实现promise模式
proxy.invoke("divide", 100, prompt("Divisor?"))
.done(function(result) {
alert(result);
})
.fail(function(err) {
alert(err);
});
[/code]
维持状态
同时我们也可以保持状态var proxy = connection.createHubProxy("AlertService");
proxy.state.MsgId = 1;
proxy.state.UserName = "Obi Wan";
[/code]
从服务器接收
我们通过on()捕获
proxy.on("ShowAlert", function(msg) {alert(msg); });
[/code]
第一个参数是服务器指定调用的方法名,第二个参数是匿名方法将被执行。
结束语
今天简单介绍一下代理与非代理的区别,下一讲将分析一个小例子来掌握。
参考文献
SignalR Programming in Microsoft ASP.NET pdf 下载相关文章推荐
- 【重构学习】01 重构与性能
- 面试题_66_to_75_Java IO 和 NIO 的面试题
- mini2440 SDRAM初始化学习的一些总结与疑问
- 运算符重载相关代码
- SpringMVC源码总结(一)HandlerMapping和HandlerAdapter入门
- 学习Material Design Support
- PHP生成pdf
- 1071. Speech Patterns (25)【字符串操作】——PAT (Advanced Level) Practise
- 面试题_48_to_65_Java 集合框架的面试题
- CHARINDEX:显示包含"A"的所有雇员的姓名及"A"在姓名字段中的位置
- 欢迎使用CSDN-markdown编辑器
- 久违了,我的hibernate
- c++对象内存模型【内存布局】
- 蓝桥杯之查找整数
- 观察者模式
- uva10400
- 1070. Mooncake (25)【贪心】——PAT (Advanced Level) Practise
- 解决mysql不能通过'/tmp/mysql.sock 连接的问题
- Docker介绍与安装使用(一)
- 怎么快速判断一篇论文的质量