signalr

c# p2p 穿透(源码加密)

六月ゝ 毕业季﹏ 提交于 2020-08-14 12:17:25
http://blog.oraycn.com/ESFramework_Demo_P2P.aspx 测试,完全OK! 我很喜欢这个。可以源码是加密的!我希望实现 web 版本的p2p视频观看,aehyok提出 用 SignalR 。要学习的东西很多啊。 msdn 上面有p2p 的局域网实例代码下载。 ESFramework Demo -- P2P通信Demo(附源码) 现在我们将在 ESFramework Demo -- 文件传送Demo 的基础上,使用ESPlus提供的第四个武器,为其增加P2P通信的功能。在阅读本文之前,请务必先掌握 ESFramework 开发手册(04) -- 可靠的P2P 一文中介绍的P2P的基础知识以及相关API的用法。 本Demo主要演示以下功能: (1)创建基于TCP的P2P通道 (2)创建基于UDP的P2P通道(内部使用可靠的UDP) (3)使用P2P通道发送消息和传送文件 一.服务端 在P2P打洞的过程中,服务端会参与协助P2P通道的建立,整个过程是由ESFramework/ESPlus内部自动完成的,而这个过程对于框架使用者是透明的。P2P通道创建后,客户端与客户端之间的通信就与服务器没有任何关系了。所以我们直接把上一个demo的服务端拿过来用,不需要做任何修改。 二.客户端

Blazor 修仙之旅

南笙酒味 提交于 2020-08-14 08:26:34
一.前言 这是《Blazor 修仙之旅》的第三篇,前面两分别是《初次尝试》、《组件与数据绑定》,直接到这里上 Ant Design 确实连不起来,跨度比较大,其实我也是在边学边写,看的是官方文档,我觉得中间这部分重复写博客的意义不大,所以我建议去看官方文档,传送门: 点我 。如果看过我的前两篇,我建议您从这里开始看: 点我 。不用每篇都深刻理解,但需要有一个基本概念。好了,下面进入正题。 二. Ant Design of Blazor 介绍 ant-design-blazor 是国内开发者 ElderJames 创建的一个开源项目。在前不久的微软Build大会也见到了它的身影,受到了微软官方推荐,点赞!顾名思义, ant-design-blazor 是 Ant Design 的 Blazor 实现,开发和服务于企业级后台产品。 ✨ 特性 🌈 提炼自企业级中后台产品的交互语言和视觉风格。 📦 开箱即用的高质量 Razor 组件,可在多种托管方式共享。 💕 支持基于 WebAssembly 的客户端和基于 SignalR 的服务端 UI 事件交互。 🎨 支持渐进式 Web 应用(PWA) 🛡 使用 C# 构建,多范式静态语言带来高效的开发体验。 ⚙️ 基于 .NET Standard 2.1,可直接引用丰富的 .NET 类库。 🎁 可与已有的 ASP.NET Core MVC

使用命名管道承载gRPC

半腔热情 提交于 2020-08-14 06:51:56
最近GRPC很火,感觉整RPC不用GRPC都快跟不上时髦了。 gRPC设计 gRPC是一种与语言无关的高性能远程过程调用 (RPC) 框架。刚好需要使用一个的RPC应用系统,自然而然就盯上了它,但是它真能够解决所有问题吗?不见得,先看看他的优点: gRPC的主要优点: 现代高性能轻量级 RPC 框架。 协定优先 API 开发,默认使用协议缓冲区,允许与语言无关的实现。 可用于多种语言的工具,以生成强类型服务器和客户端。 支持客户端、服务器和双向流式处理调用。 使用 Protobuf 二进制序列化减少对网络的使用。 对应的适用场景: 微服务 :gRPC 设计用于低延迟和高吞吐量通信。 gRPC 对于效率至关重要的轻量级微服务非常有用。 点对点实时通信 :gRPC 对双向流式传输提供出色的支持。 gRPC 服务可以实时推送消息而无需轮询。 多语言环境 :gRPC 工具支持所有常用的开发语言,因此,gRPC 是多语言环境的理想选择。 网络受限环境 :gRPC 消息使用 Protobuf(一种轻量级消息格式)进行序列化。 gRPC 消息始终小于等效的 JSON 消息。 gRPC还是有缺点的: 浏览器支持受限 :绝大数浏览器不支持 HTTP/2 非人工可读取 :proto文件规定的格式在通讯中会序列化成二进制数据,人工解析较为困难。 不适用的场景与替代: 浏览器可访问的API :gRPC

实时web应用方案——SignalR(.net core)

穿精又带淫゛_ 提交于 2020-08-13 04:57:31
何为实时 先从理论上解释一下两者的区别。 大多数传统的web应用是这样的:客户端发起http请求到服务端,服务端返回对应的结果。像这样: 也就是说,传统的web应用都是客户端主动发起请求到服务端。 那么实时web应用呢?它不需要主动发起请求,服务端可以主动推送信息到客户端。 举栗子的话,实时聊天工具、web游戏等都可以算是实时应用。 什么是SignalR 如果想做一个实时应用,最好用web socket。很早以前我也写过web socket的实现方式,但不够全面,这里再补上一篇。 来说说signalR,它是一款开源的实时框架,可以使用三种方式实现通信(long polling、server sent events、web socket)。它很好的整合了底层技术,让我们可以不用关注底层技术实现而把精力聚焦在业务实现上。一个完整的signalR包括客户端和服务端,服务端支持net core/net framework,还支持大部分客户端,比如浏览器和桌面应用。 回落机制 为了兼容不同浏览器(客户端)和服务端,signalR采用了回落机制,使得它可以根据情况协商使用不同的底层传输方式。假如浏览器不支持web socket,就自动降级使用sse,再不行就long polling。当然,也可以禁用这种机制,指定其中一种。 三种通信方式 long polling(长轮询)

民谣与2017年终总结

天大地大妈咪最大 提交于 2020-08-12 17:37:28
东风摇众木,即有看花期。 之所以写这个标题,是因为我最近觉得,在生活中,我们一定要积极向上的面向阳光面向正能量的姿态对待明天。 作为一个伪文青,其实很早就知道《米店》,真正被感染是老狼在《歌手》上的演绎。在一群的嘶吼、高音和炫技之中,老狼像个诗人吟唱着,张玮玮的手风琴悠然依旧,伴奏手鼓声音铿然,老狼用温润而极具叙事性、像个游吟诗人一样温柔而动听的诠释这首歌,丰富而内敛,民谣韵味如烟般弥散,微微仰着头,目光穿透一切遥望远方,如饮美酒,如对良人。 《米店》是张玮玮在新疆唱歌时写给远方情人的一首歌。歌曲中弥漫了历经时间洗礼沉淀下来的那份恬淡。他用不经雕饰的唱功,缓缓的唱出诗一般的歌词,手风琴的铺陈更渲染了文艺的氛围。在快节奏的城市生活中奔走的人们,听到这首南方气息浓郁的浪漫小情歌,应该都会不自觉的放慢脚步,想一想自己的生活。 但是真正喜欢的还是张玮玮那个版本,那段手风琴太惊艳。张玮玮在知乎上是这样说起这首歌创作的背景,2007年和女朋友异地恋,在爱情的催促下写了“米店”这首歌。女友是江南人,当时想毕业后开杂货铺,米店是她给自己店起的名字,他那时正处在人生低谷,野孩子乐队刚刚解散,他在北京各大酒吧流落演唱的他陷入迷茫,宅在北京一个老式居民楼里混日子。有时看着窗外的行人那么忙碌,觉得自己像是在时间里卡住了,很想离开北京过另一种生活。后来,他邂逅了兰州人郭龙,二人组成新的乐队,继续民谣生涯

实时web应用方案——SignalR(.net core)

拟墨画扇 提交于 2020-08-12 00:31:18
何为实时 先从理论上解释一下两者的区别。 大多数传统的web应用是这样的:客户端发起http请求到服务端,服务端返回对应的结果。像这样: 也就是说,传统的web应用都是客户端主动发起请求到服务端。 那么实时web应用呢?它不需要主动发起请求,服务端可以主动推送信息到客户端。 举栗子的话,实时聊天工具、web游戏等都可以算是实时应用。 什么是SignalR 如果想做一个实时应用,最好用web socket。很早以前我也写过web socket的实现方式,但不够全面,这里再补上一篇。 来说说signalR,它是一款开源的实时框架,可以使用三种方式实现通信(long polling、server sent events、web socket)。它很好的整合了底层技术,让我们可以不用关注底层技术实现而把精力聚焦在业务实现上。一个完整的signalR包括客户端和服务端,服务端支持net core/net framework,还支持大部分客户端,比如浏览器和桌面应用。 回落机制 为了兼容不同浏览器(客户端)和服务端,signalR采用了回落机制,使得它可以根据情况协商使用不同的底层传输方式。假如浏览器不支持web socket,就自动降级使用sse,再不行就long polling。当然,也可以禁用这种机制,指定其中一种。 三种通信方式 long polling(长轮询)

使用命名管道承载gRPC

那年仲夏 提交于 2020-08-11 17:36:51
最近GRPC很火,感觉整RPC不用GRPC都快跟不上时髦了。 gRPC设计 gRPC是一种与语言无关的高性能远程过程调用 (RPC) 框架。刚好需要使用一个的RPC应用系统,自然而然就盯上了它,但是它真能够解决所有问题吗?不见得,先看看他的优点: gRPC的主要优点: 现代高性能轻量级 RPC 框架。 协定优先 API 开发,默认使用协议缓冲区,允许与语言无关的实现。 可用于多种语言的工具,以生成强类型服务器和客户端。 支持客户端、服务器和双向流式处理调用。 使用 Protobuf 二进制序列化减少对网络的使用。 对应的适用场景: 微服务 :gRPC 设计用于低延迟和高吞吐量通信。 gRPC 对于效率至关重要的轻量级微服务非常有用。 点对点实时通信 :gRPC 对双向流式传输提供出色的支持。 gRPC 服务可以实时推送消息而无需轮询。 多语言环境 :gRPC 工具支持所有常用的开发语言,因此,gRPC 是多语言环境的理想选择。 网络受限环境 :gRPC 消息使用 Protobuf(一种轻量级消息格式)进行序列化。 gRPC 消息始终小于等效的 JSON 消息。 gRPC还是有缺点的: 浏览器支持受限 :绝大数浏览器不支持 HTTP/2 非人工可读取 :proto文件规定的格式在通讯中会序列化成二进制数据,人工解析较为困难。 不适用的场景与替代: 浏览器可访问的API :gRPC

实时web应用方案——SignalR(.net core)

亡梦爱人 提交于 2020-08-09 07:01:06
何为实时 先从理论上解释一下两者的区别。 大多数传统的web应用是这样的:客户端发起http请求到服务端,服务端返回对应的结果。像这样: 也就是说,传统的web应用都是客户端主动发起请求到服务端。 那么实时web应用呢?它不需要主动发起请求,服务端可以主动推送信息到客户端。 举栗子的话,实时聊天工具、web游戏等都可以算是实时应用。 什么是SignalR 如果想做一个实时应用,最好用web socket。很早以前我也写过web socket的实现方式,但不够全面,这里再补上一篇。 来说说signalR,它是一款开源的实时框架,可以使用三种方式实现通信(long polling、server sent events、web socket)。它很好的整合了底层技术,让我们可以不用关注底层技术实现而把精力聚焦在业务实现上。一个完整的signalR包括客户端和服务端,服务端支持net core/net framework,还支持大部分客户端,比如浏览器和桌面应用。 回落机制 为了兼容不同浏览器(客户端)和服务端,signalR采用了回落机制,使得它可以根据情况协商使用不同的底层传输方式。假如浏览器不支持web socket,就自动降级使用sse,再不行就long polling。当然,也可以禁用这种机制,指定其中一种。 三种通信方式 long polling(长轮询)

Nginx 服务器配置支持SignalR (WebSocket)

感情迁移 提交于 2020-08-09 00:08:24
今天SignalR部署在测试环境服务器前端出现无法连接,前端报错如下: failed: Error during WebSocket handshake: Unexpected response code: 200 Failed to start the transport 'WebSockets': null SignalR地址直接报错404 然后查看服务器端是否有什么问题,服务器端也有报错如下 Microsoft.AspNetCore.SignalR.HubConnectionContext - Failed connection handshake. 看前端报错看像是WebSocket问题,因为SignalR本质还是通过WebSocket来实现通信的,根据错误像是服务器不支持WebSocket,我们是使用的Nginx做代理的时候默认配置不支持WebSocket。需要修改代理设置,需要改代理请求头的设置。 主要修改如下,在location节点下面新增。 文末有完整的nginx配置实例可复制。 proxy_http_version 1.1 指定使用http版本,因为只有http1.1才支持长连接。 proxy_set_header Upgrade $http_upgrade 将客户端http请求头Upgrade 透传过来 roxy_set_header Connection

玩转ASP.NET Core中的日志组件

我只是一个虾纸丫 提交于 2020-08-06 20:13:20
简介 日志组件 ,作为程序员使用频率最高的组件,给程序员开发调试程序提供了必要的信息。ASP.NET Core中内置了一个通用日志接口 ILogger ,并实现了多种内置的日志提供器,例如 Console Debug EventSource EventLog TraceSource Azure App Service 除了内置的日志提供器,ASP.NET Core还支持了多种第三方日志工具,例如 elmah.io Gelf JSNLog KissLog.net Loggr NLog Serilog 开发人员在ASP.Net Core中可以自由指定日志提供器,并将日志发送到指定的位置。 本篇博文中,我们将由浅入深的介绍ASP.Net Core中通用日志接口,最后我们将实现一些自定义的日志提供器(Log Provider)。 使用系统提供的内置日志提供器 日志级别(Log Level) ASP.NET Core中提供了6种日志级别,分别是Trace, Debug, Information, Warning, Error, Critical。以下是他们的具体使用场景 日志级别 常用场景 Trace 记录一些对程序员调试问题有帮助的信息, 其中可能包含一些敏感信息, 所以应该避免在 生产环境中启用Trace日志 Debug 记录一些在开发和调试阶段有用的短时变 量(Short-term