学习使用SignalR
1、创建空白的控制台程序
2、添加两个NuGet包(Microsoft.AspNet.SignalR.SelfHost、Microsoft.Owin.Cors、Topshelf)Topshelf用于快捷创建windows服务
3、添加Myservice服务类
using Microsoft.AspNet.SignalR.Hosting;
using Microsoft.Owin.Hosting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace BCode_Framework_ConsoleSignalR
{
public class MyService
{
private IDisposable SignalR { get; set; }
private string SignalRUrl = string.Empty;
public MyService()
{
SignalRUrl = "http://127.0.0.1:1010";
Console.WriteLine("获取配置:" + SignalRUrl);
} public bool Start()
{
try
{
Console.WriteLine("事实消息服务运行在:" + SignalRUrl);
SignalR = WebApp.Start(SignalRUrl);
return true;
}
catch
{
return false;
} } public bool Stop()
{
if (SignalR != null)
{
SignalR.Dispose();
}
return true;
}
}
}
4、设置Program文件中Main类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Owin;
using Microsoft.Owin.Hosting;
using Topshelf;
namespace BCode_Framework_ConsoleSignalR
{
class Program
{
static void Main()
{
HostFactory.Run(x => {
//设置服务窗口
x.Service<MyService>(sc =>
{
sc.ConstructUsing(service => new MyService());
sc.WhenStarted(service => service.Start());
sc.WhenStopped(service => service.Stop());
});
x.SetServiceName("CheckService");//服务名称
x.SetDescription("Check");//服务描述
x.SetDisplayName("Check Service");//服务显示的名称
x.RunAsLocalSystem();//以本地系统账户启动服务
}); #region 为了方便调试
StartOptions options = new StartOptions();
//服务器Url设置
options.Urls.Add("http://127.0.0.1:1010");
//Server实现类库设置
options.ServerFactory = "Microsoft.Owin.Host.HttpListener";
//以当前的Options和Startup启动Server
using (WebApp.Start(options))
{
Console.WriteLine("Owin Host/Server started,press enter to exit it...");
//显示启动信息,通过ReadLine驻留当前进程
Console.ReadLine();
}//Server在Dispose中关闭
#endregion }
}
}
5、创建SignalR集线器类 重写了一个连接方法和创建一个客户端方法
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
using System;
using System.Threading.Tasks;
namespace BCode_Framework_ConsoleSignalR.Hubs
{
//定义客户端调用服务端方法的名称,如果没有定义注意客户端会自动把服务端方法的首字母改为小写
[HubName("serviceMonitorHub")]
public class ServiceMonitorHub:Hub
{
//当客户端与服务器建立连接后执行的方法
public override Task OnConnected()
{
//获取客户端ID
Console.WriteLine("{0}已连接", Context.ConnectionId);
//服务端往客户端发送数据ServerSendData方法为客户端定义的方法
Clients.Client(Context.ConnectionId).ServerSendData("服务端与客户端:" + Context.ConnectionId + "成功建立连接!");
return base.OnConnected();
}
//客户端执行服务器端的方法
[HubMethodName("ClickSendData")]
public void ClickSendData(string msg)
{
Console.WriteLine("接收到客户端" + Context.ConnectionId + "发送的数据:" + msg);
}
}
}
6、添加Startup启动类
using Microsoft.Owin.Cors;
using Owin;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace BCode_Framework_ConsoleSignalR
{
class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR();
}
}
}
7、客户端调用
web端引用NuGet包(Microsoft.AspNet.SignalR.JS)
<script src="~/Scripts/jquery-1.6.4.min.js"></script>
<script src="~/Scripts/jquery.signalR-2.4.1.min.js"></script>
<script src="http:127.0.0.1:1010/SignalR/Hubs"></script>
<div>
<input id="txt_value" type="text" />
<input id="btn_send" type="button" value="发送" />
<label id="lbl_msg"></label>
</div>
<script>
var KeyValue = "";
var app = null;
var Connectioned = false;
$(function () {
if (!Connectioned) {
$.connection.hub.url = "http:127.0.0.1:1010/SignalR/Hubs";
app = $.connection.serviceMonitorHub;
}
if (app != null) {
app.client.ServerSendData = function (msg) {
$("#lbl_msg").append("<br/>" + msg);
}
$.connection.hub.start()
.done(function () { $('#btn_send').click(function () {
connected = true;
console.log('Now connected, connection ID=' + $.connection.hub.id);
app.server.ClickSendData($("#txt_value").val());
}) })
.fail(function () {
console.log('Not fount connect');
})
} })
</script>
8、测试结果
学习使用SignalR的更多相关文章
- Asp.net core 学习笔记 SignalR
refer : https://kimsereyblog.blogspot.com/2018/07/signalr-with-asp-net-core.html https://github.com/ ...
- 一步一步学习SignalR进行实时通信_9_托管在非Web应用程序
原文:一步一步学习SignalR进行实时通信_9_托管在非Web应用程序 一步一步学习SignalR进行实时通信\_9_托管在非Web应用程序 一步一步学习SignalR进行实时通信_9_托管在非We ...
- signalr中Group 分组群发消息的简单使用
前一段时间写了几篇关于signalr的文章 1.MVC中使用signalR入门教程 2.mvc中signalr实现一对一的聊天 3.Xamarin android中使用signalr实现即时通讯 在平 ...
- 使用ASP.NET MVC Web SignalR 构建单身聊天室(一)
前言:本系列的头章,想要带大家一起学习Web SignalR,那它是什么呢?ASP .NET SignalR 是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.什么 ...
- WinForm中 Asp.Net Signalr消息推送测试实例
p{ text-align:center; } blockquote > p > span{ text-align:center; font-size: 18px; color: #ff0 ...
- 客户端-服务器端互动比较与原生实例(比较ajax,server-sent event,websocket/netsocket)
昨日学习了websocket的原生实例,觉得有必要把几种常见的客户端-服务器端无刷新交互形式列举比较: 一.Ajax:客户端决定何时主动向Server端发请求 如:无刷新评论.无刷新更换图片. 主要目 ...
- 一步一步学习SignalR进行实时通信_1_简单介绍
一步一步学习SignalR进行实时通信\_1_简单介绍 SignalR 一步一步学习SignalR进行实时通信_1_简单介绍 前言 SignalR介绍 支持的平台 相关说明 OWIN 结束语 参考文献 ...
- 一步一步学习SignalR进行实时通信_8_案例2
原文:一步一步学习SignalR进行实时通信_8_案例2 一步一步学习SignalR进行实时通信\_8_案例2 SignalR 一步一步学习SignalR进行实时通信_8_案例2 前言 配置Hub 建 ...
- 一步一步学习SignalR进行实时通信_7_非代理
原文:一步一步学习SignalR进行实时通信_7_非代理 一步一步学习SignalR进行实时通信\_7_非代理 SignalR 一步一步学习SignalR进行实时通信_7_非代理 前言 代理与非代理 ...
随机推荐
- Jmeter的初体验--安装
准备工作 安装JMeter前需要安装配置好Java 一.安装 1.直接在官网下载安装即可,下载地址:http://jmeter.apache.org/download_jmeter.cgi,(Wind ...
- vsftpd 参数说明
2021-07-28 该文章为转载文章,非原创 参数作用# 是否允许匿名访问 [ 12行 ]anonymous_enable=[YES|NO]# 是否允许本地用户访问( /etc/passwd中的用户 ...
- Shell脚本一键部署——源码编译安装MySQL及自动补全工具
Shell脚本一键部署--源码编译安装MySQL及自动补全工具 编译安装MySQL 1.软件包 Mysql安装包 将安装包拖至/opt目录下,编辑一个脚本文件,将以下内容复制进去,然后source或者 ...
- Python - typing 模块 —— Union
前言 typing 是在 python 3.5 才有的模块 前置学习 Python 类型提示:https://www.cnblogs.com/poloyy/p/15145380.html 常用类型提示 ...
- jvm学习笔记:类加载过程
类加载器子系统 类加载器的作用是加载class文件到内存 加载阶段->链接阶段->初始化阶段 ClassLoader只负责class文件的加载,至于是否能够运行由执行引擎判断 加载的类信息 ...
- ElasticAlert基于聚合告警
背景 最近公司网站经常被漏洞扫描,虽然并没有什么漏洞给对方利用,但是每次扫描我们也必须要察觉到,如果扫描的量太大,可以考虑从公有云的安全组上禁用掉这个IP,所以需要统计指定时间内每个IP的访问次数,这 ...
- (7)java Spring Cloud+Spring boot+mybatis企业快速开发架构之SpringCloud-Spring Boot Starter的介绍及使用
Spring Boot 的便利性体现在,它简化了很多烦琐的配置,这对于开发人员来说是一个福音,通过引入各种 Spring Boot Starter 包可以快速搭建出一个项目的脚手架推荐分布式架构源 ...
- 【第二篇】- Maven 环境配置之Spring Cloud直播商城 b2b2c电子商务技术总结
Maven 环境配置 Maven 是一个基于 Java 的工具,所以要做的第一件事情就是安装 JDK. 如果你还未安装 JDK,可以参考我们的 Java 开发环境配置. 系统要求 项目 要求 JDK ...
- oracle table()函数
PL/SQL表---table()函数用法/* PL/SQL表---table()函数用法:利用table()函数,我们可以将PL/SQL返回的结果集代替table. oracle内存表在查询和报表的 ...
- tar解压缩问题
gzip: stdin: unexpected end of filetar: 归档文件中异常的 EOFtar: 归档文件中异常的 EOFtar: Error is not recoverable: ...