Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >dotnet core使用websocket通信

dotnet core使用websocket通信

作者头像
sofu456
发布于 2021-03-20 05:59:30
发布于 2021-03-20 05:59:30
96000
代码可运行
举报
文章被收录于专栏:sofu456sofu456
运行总次数:0
代码可运行

dotnet core5.0

dotnet core支持websocket通信配置如下

app.UseWebSockets(new WebSocketOptions() {KeepAliveInterval=TimeSpan.FromSeconds(120)});

相关配置可以在msdn上查到,建立websocket服务端如下,代码不能放在设置mvc模式后面,否则接收的js端的数据会被mvc过滤

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
app.Use(async (context, next) =>{
    if (context.Request.Path == "/ws"){
        if (context.WebSockets.IsWebSocketRequest){
            using (WebSocket webSocket = await context.WebSockets.AcceptWebSocketAsync()){
                await WsData.BroadCastData(webSocket,context);
            }
        }
        else{
            await next();
        }
    }
    else{
        await next();
    }
});

js客户端

this.websock = new WebSocket( ‘ws://’ + window.location.host + ‘/ws’ ); websocket连接打开事件onopen、接收数据事件onmessage

http 101

socketjs-node upgrade请求,请求升级服务端websocket,否则客户端接收不到数据

websocket version 13,websocket各个浏览器版本不同,需要兼容低版本浏览器 onopen后,一直未收到onmessage消息,开始以为是http 101错误,后面查了很久才发现,SendAsync函数中有一个endofmessage参数,置为true才发送一个完整的包,否则一直缓存

handshake Sec-WebSocket-Protocol non empty

js端创建websocket的时候第二个参数protocols非空,如下

this.socket = new WebSocket(this.url, this.options.protocols || null);

服务端需要创建子协议返回数据,去掉protocols会比较简单

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/03/03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SignalR 开发到生产部署避坑指南
不管是.NET客户端还是JavaScript客户端,构建连接时都存在一个默认配置:SkipNegotiation=fasle,负负得正就等于要求协商,这个默认配置的完整含义是 建立SignalR连接时,客户端要求协商传输方式。
有态度的马甲
2021/10/27
1.3K0
使用 StreamJsonRpc 在 ASP.NET Core 中启用 JSON-RPC
StreamJsonRpc 是微软开发的一个开源库,用于在 .NET 平台中实现基于 JSON-RPC 2.0 规范 的远程过程调用(RPC)。它通过流(如管道、网络流等)实现高效的跨进程或跨网络通信,特别适用于需要轻量级、灵活通信的场景。以下是对 StreamJsonRpc 的详细介绍,结合你提供的参考文章中的关键点:
张善友
2025/04/14
660
.NET Core 基于Websocket的在线聊天室
我们在传统的客户端程序要实现实时双工通讯第一想到的技术就是socket通讯,但是在web体系是用不了socket通讯技术的,因为http被设计成无状态,每次跟服务器通讯完成后就会断开连接。 在没有websocket之前web系统如果要做双工通讯往往使用http long polling技术。http long polling 每次往服务器发送请求后,服务端不会立刻返回信息来结束请求,而是一直挂着直到有数据需要返回,或者等待超时了才会返回。客户端在结束上一次请求后立刻再发送一次请求,如此反复。http long polling虽然能实现web系统的双工通讯,但是有个很大的问题,就是基于http协议客户端每次发送请求都需要携带巨大的头部。在并发交互少量数据的时候非常不划算,对服务器资源的消耗也是巨大的。 websocket很好的改善了以上问题。它基于tcp重新设计了一套协议,同时又兼容http,默认跟http一样使用80/443端口。websocket链接建立本质上就是一次http请求,直接使用http协议的upgrade头来标识这是一次websocket请求,服务端回复101状态码表示“握手”成功。
李明成
2020/03/18
1.1K0
WebSocket in ASP.NET Core
  WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算)
yoyofx
2018/09/05
1.1K0
WebSocket in ASP.NET Core
Spring整合WebSocket
WebSocket,干什么用的?我们有了HTTP,为什么还要用WebSocket?很多同学都会有这样的疑问。我们先来看一个场景,大家的手机里都有微信,在微信中,只要有新的消息,这个联系人的前面就会有一个红点,这个需求要怎么实现呢?大家思考3秒钟。哈哈,最简单,最笨的方法就行客户端轮询,在微信的客户端每隔一段时间(比如:1s或者2s),向服务端发送一个请求,查询是否有新的消息,如果有消息就显示红点。这种方法是不是太笨了呢?每次都要客户端去发起请求,难道就不能从服务端发起请求吗?这样客户端不就省事了吗。再看看股票软件,每个股票的当前价格都是实时的,这我们怎么做,每个一秒请求后台查询当前股票的价格吗?这样效率也太低了吧,而且时效性也很低。这就需要我们今天的主角WebSocket去实现了。
小忽悠
2020/08/31
7800
Spring整合WebSocket
ASP.NET Core基于WebSocket实现消息推送实战演练
一、课程介绍 很多网站为了实现推送技术,所用的技术都是 Ajax 轮询。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然而HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。 HTML5 定义的 WebSocket 协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。 今天我们要通过使用ASP.Net C
跟着阿笨一起玩NET
2020/08/24
4.3K0
ASP.NET Core基于WebSocket实现消息推送实战演练
5000字!带你零距离接触websocket!
原文 https://juejin.im/post/6876301731966713869
lucifer210
2020/10/23
5110
5000字!带你零距离接触websocket!
C# 一分钟浅谈:GraphQL 中的订阅与发布
随着 Web 技术的发展,GraphQL 已经成为一种流行的 API 查询语言,它允许客户端精确地请求所需的数据,从而提高数据加载效率。除了查询和变更操作外,GraphQL 还支持订阅功能,使得客户端能够实时接收服务器端的数据更新。本文将从 C# 的角度出发,浅谈 GraphQL 中的订阅与发布机制,包括常见问题、易错点及如何避免,并通过代码案例进行详细解释。
Jimaks
2024/11/29
1670
实现websocket的两种方式
1.两种方式,一种使用tomcat的websocket实现,一种使用spring的websocket
凯哥Java
2019/06/28
2K0
深入理解JavaScript实现WebSocket通信
随着互联网技术的不断发展,Web应用程序的交互性和实时性需求越来越高,而HTTP协议的传输方式并不能满足这些需求。因此,WebSocket协议应运而生,它是一种基于TCP协议的全双工通信协议,能够在客户端和服务器之间建立持久性的连接,实现实时通信。
Front_Yue
2024/01/02
2.1K0
深入理解JavaScript实现WebSocket通信
websocket深入浅出
答: 它是一种网络通信协议,是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。
全栈程序员站长
2022/09/14
2.3K0
websocket深入浅出
「IM系列」WebSocket实践教程:基础入门实战
WebSocket是一种通信协议,可在单个TCP连接上进行全双工通信。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就可以建立持久性的连接,并进行双向数据传输。
Tinywan
2023/12/03
5380
「IM系列」WebSocket实践教程:基础入门实战
httpServer来代理WebSocket通信
websocket本质是一种网络应用层协议,建立在单个TCP连接上的全双工模式,用来弥补了http协议在持续双向通信能力上的不足,允许服务端与客户端之间可以双向主动推送数据。
科技新语
2022/07/29
6290
一文读懂 WebSocket 通信过程与实现
WebSocket 是一种标准协议,用于在客户端和服务端之间进行双向数据传输。但它跟 HTTP 没什么关系,它是一种基于 TCP 的一种独立实现。
前端教程
2018/07/27
6690
一文读懂 WebSocket 通信过程与实现
WebSocket和Socket的区别,你真的知道吗?
应用场景: 网站上的即时通讯是很常见的,比如网页的QQ,聊天系统等。按照以往的技术能力通常是采用轮询、Comet技术解决。
Vincent-yuan
2021/12/20
10.1K0
WebSocket和Socket的区别,你真的知道吗?
一文读懂 WebSocket 通信过程与实现
来源:Python那些事 ID:PythonSomething 什么是 WebSocket ? WebSocket 是一种标准协议,用于在客户端和服务端之间进行双向数据传输。但它跟 HTTP 没什么关系,它是一种基于 TCP 的一种独立实现。 以前客户端想知道服务端的处理进度,要不停地使用 Ajax 进行轮询,让浏览器隔个几秒就向服务器发一次请求,这对服务器压力较高。另外一种轮询就是采用 long poll 的方式,这就跟打电话差不多,没收到消息就一直不挂电话,也就是说,客户端发起连接后,如果没消息,就一
小小科
2018/06/20
2.2K0
使用Go语言创建WebSocket服务
今天介绍如何用Go语言创建WebSocket服务,文章的前两部分简要介绍了WebSocket协议以及用Go标准库如何创建WebSocket服务。第三部分实践环节我们使用了gorilla/websocket库帮助我们快速构建WebSocket服务,它帮封装了使用Go标准库实现WebSocket服务相关的基础逻辑,让我们能从繁琐的底层代码中解脱出来,根据业务需求快速构建WebSocket服务。
KevinYan
2020/03/26
6.6K0
.NET WebSocket 核心原理初体验
上个月我写了《.NET gRPC核心功能初体验》, 里面使用gRPC双向流做了一个打乒乓球的Demo, [实时][双向]这两个标签是不是很熟悉,对, WebSockets也可以做实时双向通信。
有态度的马甲
2021/05/07
1.2K0
《深入浅出Node.js》-WebSocket
WebSocket 与 Node 之间的配合可以说是天作之合:WebSocket 客户端基于事件的编程模型与 Node 中自定义事件相差无几;WebSocket 实现了客户端与服务器之间的长连接,而 Node 在与大量客户端之间保持高并发连接方面非常擅长。
李振
2021/11/26
1.5K0
《深入浅出Node.js》-WebSocket
使用curl指令发起websocket请求
其中提到nginx默认不会为客户端转发Upgrade、Connection标头[3], 因为为了让被代理的后端服务器知道客户端要升级协议,故要在nginx上显式转发标头:
有态度的马甲
2022/08/23
7.6K0
使用curl指令发起websocket请求
相关推荐
SignalR 开发到生产部署避坑指南
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验