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的简单使用(二)的更多相关文章
- 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 ...
- iOS开发UI篇—Quartz2D简单使用(二)
iOS开发UI篇—Quartz2D简单使用(二) 一.画文字 代码: // // YYtextview.m // 04-写文字 // // Created by 孔医己 on 14-6-10. // ...
- 使用C语言实现二维,三维绘图算法(3)-简单的二维分形
使用C语言实现二维,三维绘图算法(3)-简单的二维分形 ---- 引言---- 每次使用OpenGL或DirectX写三维程序的时候, 都有一种隔靴搔痒的感觉, 对于内部的三维算法的实现不甚了解. 其 ...
- [SignalR]一个简单的聊天室
原文:[SignalR]一个简单的聊天室 1.说明 开发环境:Microsoft Visual Studio 2010 以及需要安装NuGet. 2.添加SignalR所需要的类库以及脚本文件: 3. ...
- 【sql注入】简单实现二次注入
[sql注入]简单实现二次注入 本文转自:i春秋社区 测试代码1:内容详情页面 [PHP] 纯文本查看 复制代码 01 02 03 04 05 06 07 08 09 10 11 12 13 14 1 ...
- SignalR的简单实现消息广播
之前由于一个项目的需要(简单说一下,一个网页游戏,裁判的页面点击开始按钮,玩家便可以开始游戏),研究了很久,最终一个同事跟我推荐了SignalR.距离项目结束已经有一段时间了,再来回顾一下Signal ...
- VC6下OpenGL 开发环境的构建外加一个简单的二维网络棋盘绘制示例
一.安装GLUT 工具包 GLUT 不是OpenGL 所必须的,但它会给我们的学习带来一定的方便,推荐安装. Windows 环境下的GLUT 本地下载地址:glut-install.zip(大小约为 ...
- Java秒杀简单设计二:数据库表和Dao层设计
Java秒杀简单设计二:数据库表Dao层设计 上一篇中搭建springboot项目环境和设计数据库表 https://www.cnblogs.com/taiguyiba/p/9791431.html ...
- 爬虫简单之二---使用进程爬取起点中文网的六万多也页小说的名字,作者,等一些基本信息,并存入csv中
爬虫简单之二---使用进程爬取起点中文网的六万多也页小说的名字,作者,等一些基本信息,并存入csv中 准备使用的环境和库Python3.6 + requests + bs4 + csv + multi ...
随机推荐
- Git 常用命令总结(精问)
Git 常用命令总结(精问) 一.总结 一句话总结:下次尝试做任何git的操作之前,把这个精看精问一遍,绝对会有意向不到的收获. 二.Git 常用命令总结 1.git常用命令 安装及配置: Ubunt ...
- WPF Chart 图标
DevExpress: <dxc:ChartControl.Diagram> <dxc:XYDiagram2D.SeriesTemplate> </dxc:XYDiagr ...
- 在navicat上设置定时计划执行存储过程
原文 应用情景: 有一个存储过程,需要每天定时执行一次.所以在navicat上使用事件处理,当然还有其他的方法,这只是一种.作为参考 1.事件定义填写 2.事件计划设置 3.保存 点击上方保存即可 常 ...
- React中的state与props的再理解
props可以看做是 property 的缩写的复数,可以翻译为属性,类似于HTML 标签的自定义属性.在大多数React教程里讲 state 和 props 主要的区别在于 props 是不可变的, ...
- 黑科技 —— Type-C 接口与 USB3.1
Type-C 接口解决了 USB 永远插不准的世界性难题. 小开科普一分钟:究竟USB Type-C是何方神圣? 1. Type-C USB Type-C,简称是 USB-C.Type-C 只是 US ...
- Retrieving data from a server
A system includes a server and a controller embedded in a device. Both the server and the embedded c ...
- TBB、OpenCV混合编程
TBB提供了Parallel_for.Parallel_do.Parallel_reduce等通用并行算法,可以应用在不同的并行算法场合,Parallel_for适合用在多个数据或请求之间彼此没有依赖 ...
- 局部QEventLoop帮助QWidget不消失(也就是有一个局部事件循环始终在运行,导致程序被卡住那里,但仍可以接受事件。说白了就是有一个while语句死活不肯退出,直到收到退出信号)
熟悉的陌生人 Qt 是事件驱动的,所以当你用Qt的时候,几乎时时刻刻和 QEventLoop 打交道.,只是你可能没有意识到: QCoreApplicaton::exec() QApplication ...
- JDBC数据源DBCP源代码情景分析
在之前的一篇博文从JDBC到commons-dbutils 中,我曾经写到,对于获取数据库连接,有一个解决方案,那就是数据源.业界用到的比较普遍的开源数据源解决方案有很多,DBCP是其中一种,今天,我 ...
- 跟我学ASP.NET MVC之十:SportsStrore安全
摘要: 在之前的文章中,我给SportsStore应用程序添加了产品管理功能,这样一旦我发布了网站,任何人都可能修改产品信息,而这是你必须考虑的.他们只需要知道你的网站有这个功能,以及功能的访问路径是 ...