微信小程序如何使用原生Websocket api与Asp.Net Core SignalR 通信

这篇具有很好参考价值的文章主要介绍了微信小程序如何使用原生Websocket api与Asp.Net Core SignalR 通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

如题,这可能算是.net 做小程序的服务端时,绕不开的一个问题,老生常谈了。同样的问题,我记得我2018/19年的一个项目的解决方案是:

修改官方的SignalR.js的客户端:把里面用到浏览器的Websocket改成微信小程序的官方api的。目前网上也有不少这样的方案,已经改好开源了;这种方案的缺点是可能有一段时间了,可能跟目前自己的服务端版本不兼容,跟目前自己微信小程序的运行环境不兼容。或者已经有些隐藏bug等等,用上写好业务了再发现bug头疼得很。使用起来很没有安全感;

我现在这里的方案是:

直接使用微信小程序的Websocket的原生api与服务端通信;

原生api文档:https://developers.weixin.qq.com/minigame/dev/api/network/websocket/wx.connectSocket.html

服务端

运行环境:.net core 6 On Linux(k8s)ubuntu 18.04

目前已有一个SignalR的Hub:SmartCutHub.cs

微信小程序如何使用原生Websocket api与Asp.Net Core SignalR 通信

可以看到只有红圈函数GenerateVideoScript()接收一个强类型的参数:GenerateVideoScriptDto

ps:强类型参数传参时跟webapi一样用json对象即可;

Program.cs注册:

app.MapHub<SmartCutHub>("/ws/smartcut");
    
//所以路由是
ws://localhost:5055/ws/smartcut

小程序端

创建连接

这里代码是用的微信小程序原生api,请参考文档

var wsUrl = "ws://localhost:5055/ws/smartcut";

//创建连接
var conn= await wx.connectSocket({
    url: wsUrl,
    fail(err)
    {
        console.error(err)
    },
    success()
    {
        console.info(wsUrl+"链接成功")
    }
})

//创建连接成功
this.connection=conn;
let that=this;

发送消息

这里的步骤不能省略

conn.onOpen(function (res)
{
    console.log("SocketOpened");

    //先要确认协议,版本
    that.sendStrMsg("{\"protocol\":\"json\",\"version\":1}");
    //确认类型
    that.sendStrMsg("{\"type\":6}");
    
    //再发送消息内容
    that.sendStrMsg("{\"arguments\":[{\"scriptType\":\"口播类\",\"productName\":\"许愿池的王八\",\"productSpecialty\":\"在水里,爱许愿,晒太阳\",\"sceneCount\":5,\"sceneMini\":5,\"sceneMax\":10,\"remark\":\"\",\"language\":\"zh\",\"generateCount\":10}],\"invocationId\":\"0\",\"target\":\"GenerateVideoScript\",\"type\":1}");
})

注意这里的消息内容就是要求下格式:

{
	"arguments": [{
		"name": "wang"
	}], //你的参数
	"invocationId": "0",
	"target": "GenerateVideoScript", //服务端方法名
	"type": 1
}

发送消息函数

//这里发送字符串到服务端
sendStrMsg(msg)
{
	//连接成功后就示例好了
    if(this.connection)
    {
        console.info("准备发送:"+msg);
        this.connection.send({
            data: msg+"", //注意,msg这里后面这个特殊的字符不能省略
            fail(err)
            {
                console.error(err)
            },
            success(res)
            {
                console.info(res)
            },
            complete(res)
            {
                console.info(res)
            }
        });
    }
    else
    {
        console.error("ws连接不存在");
    }
}

总结

我其实这里这种方式是模拟浏览器端的Websocket传输过程的:

微信小程序如何使用原生Websocket api与Asp.Net Core SignalR 通信

注意这里消息体后面一样有这个特殊字符的

也不算原创和多有技术含量,可能大家早就理清楚搞定了。但只要能帮到一位朋友我就开心了。ok,今天就水到这。文章来源地址https://www.toymoban.com/news/detail-483828.html

到了这里,关于微信小程序如何使用原生Websocket api与Asp.Net Core SignalR 通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序websocket的使用

      感谢大家的点赞和转发,欢迎大家关注本人的博客。试用期指导,项目开发,简历优化,毕业设计/论文,欢迎添加本人微信。  新人作者,欢迎关注和收藏👏🏻👏🏻 微信小程序中使用websocket分为两步:  2.1发起请求建立一个socket连接 这里是通过微信自带的一个wx.conn

    2024年04月12日
    浏览(51)
  • 原生小程序 微信小程序 使用ucharts

    背景:    原生小程序需要好看的折线图。 实现: 小程序开发版本 一般是uni-app项目使用ucharts在原生微信小程序也是可以使用。 方法: 源码下载: uCharts: 高性能跨平台图表库,支持H5、APP、小程序(微信小程序、支付宝小程序、钉钉小程序、百度小程序、头条小程序、QQ小

    2024年02月09日
    浏览(43)
  • 原生微信小程序使用 wxs;微信小程序使用 vant-weapp组件

    在这里插入图片描述 操作顺序 :文档地址 如果使用 typescript 需要操作步骤3,否则不需要操作 2.1 在根目录下 操作 2.2 安装版本 2.3 构建包 - 详情-勾选使用 npm 2.4 使用 vant 组件

    2024年02月11日
    浏览(74)
  • 微信小程序websocket使用protobuf,发送arraybuffer

    ❤️砥砺前行,不负余光,永远在路上❤️ 这是一次继前文websocket的一个更新:小程序中使用websocket,区分房间、空间 现在遇到了一个需求是小程序接入 io-game 的websocket 和unity 游戏端同时使用一个websocket,io-game那边收发websocket消息都是采用 Protobuf 处理的。 参考项目:htt

    2024年02月15日
    浏览(47)
  • 使用vscode开发原生微信小程序

    文章目录 前言 一、vscode需要下载哪些插件? 二、相关配置 总结 由于微信小程序开发工具的弊端,我们可以使用vscode来开发微信小程序,只需要做好一下的配置即可. 1.安装微信小程序开发助手 2.wechat-snippet 3.Easy-WXLESS 1.打开设置 在settings.json中添加以下代码 由于微信小程序开发

    2024年02月16日
    浏览(58)
  • 微信小程序WebSocket接口以及在小程序中的使用。

    示例: 这里要注意url中的接口不是http://.xxx或者https://.xxx开头的,而是以ws://xxx.com或者wss://.xxx开头的,要不然就会连接失败 他们是监听监听wx.connectSocket的连接成功与否的 代码如下(示例): 这里是接收服务器的消息的(也就是聊天时对面发来的消息) 代码如下(示例):

    2024年02月09日
    浏览(54)
  • 在原生微信小程序中使用 echarts

    1.创建一个微信小程序项目或打开已有的微信小程序项目,下述示例采用全新创建的方式,在电脑文件中创建一个空的文件夹,命名自定义即可 2.将下载好的 echarts 文件放入创建好的空文件中 3.使用微信开发者工具打开创建的文件夹 4.查看创建结果 1.需要找到 app.wxss 文件中,

    2024年02月05日
    浏览(45)
  • 在原生微信小程序中使用echarts

    现在越来越多的项目都在使用可视化的功能,那么使用 echarts 实现是一种不错的选择,本文将带给大家如何在原生微信小程序中使用 echarts,保姆级教程 文件地址:https://github.com/ecomfe/echarts-for-weixin/tree/master 创建一个微信小程序项目或打开已有的微信小程序项目,下述示例采

    2024年02月09日
    浏览(50)
  • 微信小程序原生button组件使用并修改样式

     想使用原生button组件,但是想使用不同样式 注意type使用得type必须和修改时选择器样式(button[type=default])一样,才能对其修改样式,否则样式不会被修改 如果是多端适配,需要使用type为default再修改样式  

    2024年02月14日
    浏览(57)
  • 原生微信小程序中使用-阿里字体图标-详解

    1、打开阿里巴巴矢量图标库 网址:iconfont-阿里巴巴矢量图标库 2、搜索字体图标,鼠标悬浮点击添加入库  3、按如下步骤添加到自己的项目   进入微信开发者工具 1、创建 fonts文件夹 iconfont.wxss 文件,将刚才的代码复制进去 2、在 app.wxss文件 中引入路径 3、在页面中使用  

    2024年02月04日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包