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

简介: 原文:一步一步学习SignalR进行实时通信_7_非代理 一步一步学习SignalR进行实时通信\_7_非代理SignalR 一步一步学习SignalR进行实时通信_7_非代理前言 代理与非代理 建立连接 调用方法 维持状态 从服务器接收 结束语 参考文献 前言距离上次写博客已经一个多月了,一直想抽空写,却一直没时间写。
原文: 一步一步学习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 下载

目录
相关文章
|
8月前
|
前端开发 Java
在项目中使用WebSocket进行前后端通信
在项目中使用WebSocket进行前后端通信
173 0
|
8月前
|
移动开发 缓存 安全
连接世界的纽带:掌握Linux网络设计中的WebSocket服务器
本文探索了在Linux环境下实现WebSocket服务器的网络设计,将WebSocket服务器作为连接世界的纽带,为读者介绍了如何掌握Linux网络设计中的关键技术。文章从实现WebSocket协议到优化服务器性能和稳定性等方面进行了深入讲解。通过学习本文,读者将能够全面了解WebSocket服务器的原理和工作机制,并获得构建高效、可靠的Linux WebSocket服务器的实用技巧和最佳实践。无论是初学者还是有经验的开发人员,都能从本文中获得宝贵的知识和启发,进一步提升在Linux网络设计中的能力。让我们一同打造连接世界的纽带,掌握Linux网络设计中WebSocket服务器的精髓。
92 0
连接世界的纽带:掌握Linux网络设计中的WebSocket服务器
|
9月前
|
网络协议 JavaScript Python
远程读卡器web客户端(nodejs+websocket实现实时指令交互)
远程读卡器web客户端(nodejs+websocket实现实时指令交互)
【Xamarin】使用WebSocket开发实时通信应用程序
WebSockets是一种双向通信协议,或TCP连接上的持久通信通道,由许多游戏,具有聊天功能的应用程序和实时应用程序(如股票行情)利用的非常强大的协议。 在这篇博文中,我们将讨论如何构建一个简单的Xamarin聊天室应用程序,该应用程序将利用并连接到ASP.NET Core WebSocket服务。
2781 0
|
Web App开发 测试技术
WebSocket 开发模拟客户端与有游戏服务器通信
WebSocket 客户端测试功能   websocket是有标准的通信协议,在h2engine服务器引擎中继承了websocket通信协议,使用websocket通信协议的好处是很多语言或框架都内置了websocket的支持,工具也非常多,可以非常方便的测试。
1395 0
|
前端开发 JavaScript
一步一步学习SignalR进行实时通信_8_案例2
原文:一步一步学习SignalR进行实时通信_8_案例2 一步一步学习SignalR进行实时通信\_8_案例2 SignalR 一步一步学习SignalR进行实时通信_8_案例2 前言 配置Hub 建立DrawingHub 页面 javascript 实现效果 结束语 参考文献 前言 这讲分析一个案例,在一个画板上画画实时在其他客户端上显示。
1165 0
|
Web App开发 Windows
一步一步学习SignalR进行实时通信_9_托管在非Web应用程序
原文:一步一步学习SignalR进行实时通信_9_托管在非Web应用程序 一步一步学习SignalR进行实时通信\_9_托管在非Web应用程序 一步一步学习SignalR进行实时通信_9_托管在非Web应用程序 前言 部署在控制台应用程序 安装自托管包 安装跨域包 winform客户端 设计界面 连接 完整实现效果 windows服务 创建服务 安装服务 启动服务 连接服务 结束语 源码下载 参考文献 前言 本章我们将学习将signalr服务托管在非web应用程序。
1389 0