使用websocket连接(对接)asp.net core signalr
使用通用websocket连接asp.net core signalr
一、背景介绍
signalr的功能很强大,可以为我们实现websocket服务端节省不少的时间。但是可能由于不同的环境,我们在对接前端的时候总会很麻烦。虽然微软为我们提供了前端的包,但是总有一些不能用的地方。
首先我们要知道 signalr在进行websocket 连接的时候都做了什么
1.首先请求接口获取connectionId 这个我们待会要用到 我们用post请求 http://localhost:5000/chatHub/negotiate,这里chatHub是我们startup中的名称


2.接下来就是连接websocket了,这里我用的是uniapp里面的方法,用原生方法也是一样的,知道怎么连的就行了
```
this.token = res.data.connectionId
uni.connectSocket({
url: 'ws://192.168.1.211:5000/chatHub?id=' + _this.token,
method: 'GET',
success: function() {}
});
uni.onSocketOpen(function(res) {
// 连接后发送协议 {"protocol":"json", "version":1}
// 这里注意signalr发送的消息以 0x1e 分割和结尾
_this.sendSocketMessage(`{"protocol":"json", "version":1}${String.fromCharCode(0x1e)}`)
console.log('WebSocket连接已打开!');
});
uni.onSocketMessage(function(res) {
//接收数据
let msg = res.data.split(String.fromCharCode(0x1e)); //处理数据
for (let item in msg) {
if (msg[item]) {
let a = JSON.parse(msg[item])
if (a.type === 1) {
var ajson = { //前端定义一个方法 供后端调用,并传入参数
"Show": _this.Show(...a.arguments)
} //target表示要调用的方法
ajson[a.target];
}
}
}
});
//定义show方法
Show(...arg) {
this.list.push({
ss: arguments[0],
con: arguments[1]
});
uni.setStorageSync('1',this.list)
this.value = '';
},
//
sendSocketMessage: function(msg) {
if (true) { //这里要判断一下连接是否打开,我这里是随便写的,也完全没有做任何封装,需要的自己封装一下
uni.sendSocketMessage({
data: msg,
fail(res) {
//console.log(123)
}
});
} else {
}
},
handle(){
//发送消息 arguments 调用后端方法的参数,target 要调用的后端的目标函数的名称 最后加上结束符
this.sendSocketMessage(
`${JSON.stringify({"arguments":[this.user,this.value],"invocationId":"0","streamIds":[],"target":"SendMsg","type": 1})}${String.fromCharCode(0x1e)}`
)
}
```
使用websocket连接(对接)asp.net core signalr的更多相关文章
- Asp.Net Core SignalR 用泛型Hub优雅的调用前端方法及传参
继续学习 最近一直在使用Asp.Net Core SignalR(下面成SignalR Core)为小程序提供websocket支持,前端时间也发了一个学习笔记,在使用过程中稍微看了下它的源码,不得不 ...
- Asp.Net Core SignalR 与微信小程序交互笔记
什么是Asp.Net Core SignalR Asp.Net Core SignalR 是微软开发的一套基于Asp.Net Core的与Web进行实时交互的类库,它使我们的应用能够实时的把数据推送给 ...
- ASP.NET Core SignalR
ASP.NET Core SignalR 是微软开发的一套基于ASP.NET Core的与Web进行实时交互的类库,它使我们的应用能够实时的把数据推送给Web客户端. 功能 自动管理连接 允许同时广播 ...
- ASP.NET Core SignalR中的流式传输
什么是流式传输? 流式传输是这一种以稳定持续流的形式传输数据的技术. 流式传输的使用场景 有些场景中,服务器返回的数据量较大,等待时间较长,客户端不得不等待服务器返回所有数据后,再进行相应的操作.这时 ...
- ASP.NET Core SignalR:基础概述
一.简介 ASP.NET Core SignalR 是一个开源代码库,它简化了向应用添加实时 Web 功能的过程. 实时 Web 功能使服务器端代码能够即时将内容推送到客户端. SignalR 的适用 ...
- ASP.NET Core SignalR 使用
SignalR: 实时 Web 功能使服务器端代码能够即时将内容推送到客户端(包括B/S,C/S,Andriod). SignalR最新版本为3.0(截止2020-02-28) SignalR ...
- ASP.NET CORE使用WebUploader对大文件分片上传,并通过ASP.NET CORE SignalR实时反馈后台处理进度给前端展示
本次,我们来实现一个单个大文件上传,并且把后台对上传文件的处理进度通过ASP.NET CORE SignalR反馈给前端展示,比如上传一个大的zip压缩包文件,后台进行解压缩,并且对压缩包中的文件进行 ...
- [asp.net core]SignalR一个例子
摘要 在一个后台管理的页面想实时监控一些操作的数据,想到用signalR. 一个例子 asp.net core+signalR 使用Nuget安装包:Microsoft.AspNetCore.Sign ...
- LayIM.AspNetCore Middleware 开发日记(七)Asp.Net.Core.SignalR闪亮登场
前言 前几篇介绍了整个中间件的构成,路由,基本配置等等.基本上没有涉及到通讯部分.不过已经实现了融云的通讯功能,由于是第三方的就不在单独去写.正好.NET Core SignalR已经出来好久了, ...
随机推荐
- day53:django:URL别名/反向解析&URL分发&命名空间&ORM多表操作修改/查询
目录 1.URL别名&反向解析 2.URL分发&命名空间 3.ORM多表操作-修改 4.ORM多表操作-查询 4.1 基于对象的跨表查询 4.2 基于双下划线的跨表查询 4.3 聚合查 ...
- bellman-ford算法求K短路O(n*m),以及判负环O(n*m)
#include<iostream> #include<algorithm> #include<cstring> using namespace std; cons ...
- 喜大普奔!GitHub中文版帮助文档上线了!
日前,GitHub 文档的简体中文正式发布,开发者可以到官方文档上随意查阅浏览中文文档啦! 对于想要玩 GitHub,但一直苦于英语水平较差的程序员来说,这真是一个天大的好消息.下面一起来感受一下 ...
- powerDesiger的学习
一:简介 二:建立物理模型(正向工程) 1.创建 (1) file->new Model创建需要的物理模型,设置使用的数据库. 2.物理模型的数据库设计 (1)一个物理模型中可以有好几张数据库表 ...
- 使用DynamicExpresso实现表达式求值
之前写了一篇Z.Expressions表达式计算的博客,直到最近才发现Z.Expressions不是免费的.Z.Expressions从2.0开始支持了NetCore,使用一段时期后会提示许可证到期, ...
- Centos-显示文件类型-file
file 长度为0的文件则显示为空位文件,对于软链接文件则显示链接的真实文件路径,默认输出会有文件名 相关选项 -b 只显示文件类型结果 -L 显示软链接指向文件的类型 -z 显示压缩文件信息 -i ...
- C# 生成chart图表的三种方式
.net中,微软给我们提供了画图类(system.drawing.imaging),在该类中画图的基本功能都有.比如:直线.折线.矩形.多边形.椭圆形.扇形.曲线等等,因此一般的图形都可以直接通过代码 ...
- 使用docker搭建redis服务器记录
#mkdir /home/redishome#mkdir /home/redishome/data#chmod -R 777 /home/redishome把redis.conf传到/home/red ...
- Microsoft.VisualBasic.dll内置的判断变量类型的一系列实用方法
今天意外读到一线码农的一篇文章<挖一挖C#中那些我们不常用的东西之系列(2)--IsXXX 系列方法>,文章中讲到 Microsoft.VisualBasic.dll 里面的Informa ...
- 代码格式化工具:clang-format
IDE: Visual Studio Code Language: C/C++ 格式化工具: clang-format 安装 vscode安装扩展C/C++,扩展程序将自动安装clang-format ...