使用通用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的更多相关文章

  1. Asp.Net Core SignalR 用泛型Hub优雅的调用前端方法及传参

    继续学习 最近一直在使用Asp.Net Core SignalR(下面成SignalR Core)为小程序提供websocket支持,前端时间也发了一个学习笔记,在使用过程中稍微看了下它的源码,不得不 ...

  2. Asp.Net Core SignalR 与微信小程序交互笔记

    什么是Asp.Net Core SignalR Asp.Net Core SignalR 是微软开发的一套基于Asp.Net Core的与Web进行实时交互的类库,它使我们的应用能够实时的把数据推送给 ...

  3. ASP.NET Core SignalR

    ASP.NET Core SignalR 是微软开发的一套基于ASP.NET Core的与Web进行实时交互的类库,它使我们的应用能够实时的把数据推送给Web客户端. 功能 自动管理连接 允许同时广播 ...

  4. ASP.NET Core SignalR中的流式传输

    什么是流式传输? 流式传输是这一种以稳定持续流的形式传输数据的技术. 流式传输的使用场景 有些场景中,服务器返回的数据量较大,等待时间较长,客户端不得不等待服务器返回所有数据后,再进行相应的操作.这时 ...

  5. ASP.NET Core SignalR:基础概述

    一.简介 ASP.NET Core SignalR 是一个开源代码库,它简化了向应用添加实时 Web 功能的过程. 实时 Web 功能使服务器端代码能够即时将内容推送到客户端. SignalR 的适用 ...

  6. ASP.NET Core SignalR 使用

    SignalR: 实时 Web 功能使服务器端代码能够即时将内容推送到客户端(包括B/S,C/S,Andriod).   SignalR最新版本为3.0(截止2020-02-28)   SignalR ...

  7. ASP.NET CORE使用WebUploader对大文件分片上传,并通过ASP.NET CORE SignalR实时反馈后台处理进度给前端展示

    本次,我们来实现一个单个大文件上传,并且把后台对上传文件的处理进度通过ASP.NET CORE SignalR反馈给前端展示,比如上传一个大的zip压缩包文件,后台进行解压缩,并且对压缩包中的文件进行 ...

  8. [asp.net core]SignalR一个例子

    摘要 在一个后台管理的页面想实时监控一些操作的数据,想到用signalR. 一个例子 asp.net core+signalR 使用Nuget安装包:Microsoft.AspNetCore.Sign ...

  9. LayIM.AspNetCore Middleware 开发日记(七)Asp.Net.Core.SignalR闪亮登场

    前言   前几篇介绍了整个中间件的构成,路由,基本配置等等.基本上没有涉及到通讯部分.不过已经实现了融云的通讯功能,由于是第三方的就不在单独去写.正好.NET Core SignalR已经出来好久了, ...

随机推荐

  1. 出行即服务(MAAS)框架

    转自 出行即服务(MAAS)框架 一.概况 在共享交通模式和智能信息技术的基础之上,城市出现了全新的交通理念——“出行即服务(Mobility-as-a-Service,简称MaaS)”.MaaS将各 ...

  2. 1.Strom-概述

  3. DVWA从注入到GETSHELL

    好好过你的生活,不要老是忙着告诉别人你在干嘛. 最近在复习学过的东西,自己就重新搭了个dvwa来学习新思路,写一些简单的脚本来练习写代码的能力. 众所周知SQL注入的危害是相当大的,对于每个老司机来说 ...

  4. 深入理解TypeScript——第一章:上手篇

    怎么定义TypeScript呢? TypeScript是一个工具 是一个编译器 编译代码 TypeScript,通过它的能力,默认使用tsc命令,可以根据.ts为后缀名的文件生成一个新的js文件 2. ...

  5. ios7.1发布企业证书测试包的问题

    关于升级了ios7.1之后发布企业版证书的测试包不能下载的问题,这个苹果也挺坑的,什么都不说,也不警告一下,直接就不能用了 用xcode的organizer里面的console里发现安装的时候提示这个 ...

  6. 【FastDFS】SpringBoot整合FastDFS实战,我只看这一篇!!

    写在前面 在<[FastDFS]小伙伴们说在CentOS 8服务器上搭建FastDFS环境总报错?>和<[FastDFS]面试官:如何实现文件的大规模分布式存储?(全程实战)> ...

  7. Java泛型中的类型参数和通配符类型

    类型参数 泛型有三种实现方式,分别是泛型接口.泛型类.泛型方法,下面通过泛型方法来介绍什么是类型参数. 泛型方法声明方式:访问修饰符 <T,K,S...> 返回类型 方法名(方法参数){方 ...

  8. python3的基础数据类型

    看了很多文档,想自己整理一下关于python的数据类型.说干就干,下面接上. 首先,了解 常量与变量. 常量是什么?常量是指在整个程序操作过程中其值保持不变的数据: 变量是什么?变量即在程序运行过程中 ...

  9. ESD(静电释放)上半部分

    ESD(静电释放)上半部分 ESD:Electro-Static discharge静电释放 1.ESD静电释放的模式 1.1 人体放电模式(human body mode) 人体会释放静电,那么人体 ...

  10. What number should I guess next ?——由《鹰蛋》一题引发的思考

    What number should I guess next ? 这篇文章的灵感来源于最近技术部的团建与著名的DP优化<鹰蛋>.记得在一个月前,查到鹰蛋的题解前,我在与同学讨论时,一直试 ...