原文:一步一步学习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. kubernetes kubeadm部署高可用集群

    k8s kubeadm部署高可用集群 kubeadm是官方推出的部署工具,旨在降低kubernetes使用门槛与提高集群部署的便捷性. 同时越来越多的官方文档,围绕kubernetes容器化部署为环境 ...

  2. 亲测 安装 mysql5.5 64位

    1.选择 customn 更改安装目录2.选择 develop 模式,默认,占用内存较小. server machine 中等内存 dedicate mysql server machine 专用服务 ...

  3. sed 批量替换多个文件里的某个字符/串

    提示: 国际惯例使用前先备份 sed -i "s/a/b/g" `grep 'a' -rl ./`

  4. 【开源java游戏框架libgdx专题】-02-Eclipse Gradle 环境安装

    创建eclipse开发环境 Eclipse 4.5 Help -> install newsoftware 填上下载地址(Eclipse 4.5及以上版本): http://dist.sprin ...

  5. Dedecms调用文章发布时间的方法

    在织梦系统中,有时候需要调用文章发布的时间,格式不同,代码不同.现总结织梦系统dedecms调用文章发布时间的几种方法.   11-20 样式 ([field:pubdate function='st ...

  6. 得于吾师傅的js知识 js类,单写模板,和私有保护的方法

    js的类的写法: 1,写法一:function内部包含this.function()如代码: var origin_class = function(name) { var lover = ''; t ...

  7. 关于PHP导入项目的时候导入不了的情况

    导入的时候,会发现明明是一个手动创建的一个项目, 才能导入, 有时候会发现这样导入不了的情况 那是因为,可能这个项目是手动创建的,如果通过IDE可能看不出来 不过如果你进入项目的根目录的时候就会知道 ...

  8. Struts2 删除后直接直接到List显示页面

    package com.sun; import java.util.List; import java.util.Map; import org.hibernate.Session; import o ...

  9. Ext checkbox

    Ext.require([     'Ext.grid.*',     'Ext.data.*',     'Ext.util.*',     'Ext.grid.PagingScroller',   ...

  10. jquery动画总结

    基本动画 show() //直接显示元素,没有动画 show(speed, [callback]) //有动画,有回调函数 hide() //直接隐藏元素,没有动画 hide(speed, [call ...