SignalR的简单使用(二)

时间:2022-06-16 03:30:45

原文:SignalR的简单使用(二)

之前提到SignalR代理在网页,通过生成的Js来完成相关的功能。但我不禁想一个问题,

难到SignalR的服务端就能寄存在web端吗,通过访问网页能方式才能启动服务,还有客户端

也只能在web端吗?经过看官网的教程得到 了结论,两者的答案都是否定的。

关于上一篇的hub名第一个为小写的问题,还有调用客户端和服务端方式的问题,后面的教程

提到,这些名字都是用驼峰命名法的,即使定义时收字母是大写,调用时首字母小写也能调到。

1.客户端

SignalR的客户端可是DOTNET下所有的客户端,包括windowsForm、WPF等。

下列以winform为例说明问题,在DOTNET客户端实现SignalR的客户端需要添加

组件Microsoft.AspNet.SignalR.Client。

1.1新建Hub连接实例 HubConnection hubConnection=new HubConnection("uri");

其中url为SignalR的寄宿地址。这里仍然是寄宿在web端。

2.新建Hub代理实例 IHubProxy hubProxy=hubConnection.CreateHubProxy("myHub");

其中myHub为自定的Hub类。

3.通过代理实例注册客户端实例hubProxy.On("functionName",()=>{MessageBox.Show("可以");});

其中functionName为方法名,后面的为Lamda表达式表示方法体。

4.开启连接 hunConnection.Start();

5.调用服务端方法 hubProxy.Invoke("send");

其中send为服务端方法名,首字母也遵循驼峰命名法。

第二个参数是方法的参数,这里没传参数。

2.服务端--让服务端寄宿在DOTNET客户端

这里仍然以Winform为例说明问题。

2.1.引入组件Microsoft.AspNet.SignalR.SelfHost和Microsoft.Owin.Cors。

2.2.新建Startup类,用于配置Hub,代码如下

 class Startup
{
public void Configuration(IAppBuilder app)
{ app.UseCors(CorsOptions.AllowAll);
app.MapSignalR();

2.3.新建集线器类,用户hub的服务端,处理业务逻辑。

 public class MyHub : Hub
{
public void Send()
{
Clients.All.addMessage(); } }

2.4.定义一个字符串,用作hub服务端的web地址。例如:

 string url = "http://localhost:61020/"

2.5开启连接

 WebApp.Start(url);

这个方法的内部会去执行Startup类的Configuration方法配置Hub。

和直接生成的集线器类一直,只是这里寄宿在的Winform上。

当然这里还是要执行Winform才能运行SignalR,时间有限,日后发现更好的

办法会及时更新。

SignalR的简单使用(二)的更多相关文章

  1. SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论 SignalR 简单示例 通过三个DEMO学会SignalR的三种实现方式 SignalR推送框架两个项目永久连接通讯使用 SignalR 集线器简单实例2 用SignalR创建实时永久长连接异步网络应用程序

    SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论   异常汇总:http://www ...

  2. iOS开发UI篇—Quartz2D简单使用(二)

    iOS开发UI篇—Quartz2D简单使用(二) 一.画文字 代码: // // YYtextview.m // 04-写文字 // // Created by 孔医己 on 14-6-10. // ...

  3. 使用C语言实现二维,三维绘图算法(3)-简单的二维分形

    使用C语言实现二维,三维绘图算法(3)-简单的二维分形 ---- 引言---- 每次使用OpenGL或DirectX写三维程序的时候, 都有一种隔靴搔痒的感觉, 对于内部的三维算法的实现不甚了解. 其 ...

  4. [SignalR]一个简单的聊天室

    原文:[SignalR]一个简单的聊天室 1.说明 开发环境:Microsoft Visual Studio 2010 以及需要安装NuGet. 2.添加SignalR所需要的类库以及脚本文件: 3. ...

  5. 【sql注入】简单实现二次注入

    [sql注入]简单实现二次注入 本文转自:i春秋社区 测试代码1:内容详情页面 [PHP] 纯文本查看 复制代码 01 02 03 04 05 06 07 08 09 10 11 12 13 14 1 ...

  6. SignalR的简单实现消息广播

    之前由于一个项目的需要(简单说一下,一个网页游戏,裁判的页面点击开始按钮,玩家便可以开始游戏),研究了很久,最终一个同事跟我推荐了SignalR.距离项目结束已经有一段时间了,再来回顾一下Signal ...

  7. VC6下OpenGL 开发环境的构建外加一个简单的二维网络棋盘绘制示例

    一.安装GLUT 工具包 GLUT 不是OpenGL 所必须的,但它会给我们的学习带来一定的方便,推荐安装. Windows 环境下的GLUT 本地下载地址:glut-install.zip(大小约为 ...

  8. Java秒杀简单设计二:数据库表和Dao层设计

    Java秒杀简单设计二:数据库表Dao层设计 上一篇中搭建springboot项目环境和设计数据库表  https://www.cnblogs.com/taiguyiba/p/9791431.html ...

  9. 爬虫简单之二---使用进程爬取起点中文网的六万多也页小说的名字,作者,等一些基本信息,并存入csv中

    爬虫简单之二---使用进程爬取起点中文网的六万多也页小说的名字,作者,等一些基本信息,并存入csv中 准备使用的环境和库Python3.6 + requests + bs4 + csv + multi ...

随机推荐

  1. [NOIP2012] 提高组 洛谷P1083 借教室

    题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们自然 ...

  2. iOS 程序启动原理

    很多工作一段时间的iOS程序员,总是每天沉浸在代码里,大家总是按照xcode的规定生成项目,然后就开始码代码了,但是大家知道app背后的启动过程吗?当点击程序图标启动程序开始到退出,程序在运行过程中到 ...

  3. 解决HTML导出Excel表数字变成科学计数法

    - js 中导出excel 较长数字串会变成科学计数法 在做项目中,碰到如题的问题.比如要将居民的信息导出到excel中,居民的身份证号码因为长度过长(大于10位),excel会自动的将过长的数字串转 ...

  4. mysql日期时间函数

    日期时间函数1.取得当前日期时间SELECT NOW(), SYSDATE(),CURRENT_TIMESTAMP() FROM DUAL2.取得当前日期SELECT CURDATE(),CURREN ...

  5. Git版本管理工具常用命令说明

    Git常用命令 $ touch README.md 创建一个README.md文件 $ git init  创建本地仓库(repository),将会在文件夹下创建一个 .git 文件夹,.git 文 ...

  6. RawConfigParser 与 ConfigParser ——Python的配件文件读取模块

    一般情况都是使用ConfigParser这个方法,但是当我们配置中有%(filename)s这种格式的配置的时候,可能会出现以下问题: configparser.InterpolationMissin ...

  7. 你真的了解Python吗 ---Python的内存管理

    请看下面的一段代码: origin = {'a':100,'b':[1,2,34,5]} obj_copy ={}; print origin; obj_copy['key1']= origin; o ...

  8. Java编程思想学习笔记——一切都是对象

    前言 Java是基于C++的,但Java是一种更加纯粹的面向对象程序设计语言. C++和Java都是混合/杂合型语言.杂合型语言允许多种编程风格. 用引用操纵对象 每种编程语言都有自己操纵内存中元素的 ...

  9. linux内核分析综合总结

    linux内核分析综合总结 zl + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 Linux内核分析 ...

  10. Java Thread系列(三)线程安全

    Java Thread系列(三)线程安全 一.什么是线程安全 线程安全概念:当多个线程访问某一个类(对象或方法)时,这个类始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的. 线程安全来 ...