当前位置: 首页 > news >正文

网站开发创意想法深圳网站建设yihe kj

网站开发创意想法,深圳网站建设yihe kj,什么网站可以做电子画册,邵阳网站建设优化asp.net core 使用 signalR#xff08;二#xff09;Intro上次介绍了 asp.net core 中使用 signalR 服务端的开发#xff0c;这次总结一下web前端如何接入和使用 signalR#xff0c;本文主要分两部分#xff0c;一是直接使用 aspnet/signalr 这个微软开发好的 signalR 的客… asp.net core 使用 signalR二Intro上次介绍了 asp.net core 中使用 signalR 服务端的开发这次总结一下web前端如何接入和使用 signalR本文主要分两部分一是直接使用 aspnet/signalr 这个微软开发好的 signalR 的客户端另一部分是使用 h5 原生的 websocket 直接连接 signalR 的 websocket使用 signalR 客户端安装 signalr 客户端 npm 包 npm installaspnet/signalr--save获取一个 connectionimport * as signalR from aspnet/signalr; // ... const connection new signalR.HubConnectionBuilder() .withUrl(Constants.HubUrl, { accessTokenFactory: () Constants.TestToken }) .build(); // accessTokenFactory 用于指定获取 accessToken 的方式如果不需要用户登录不需要认证没有这个配置添加客户端处理方法connection.on(GameAnswerResultReceived, (result:any){ showMessage(收到问题${result.QuestionId} 答案, JSON.stringify(result)); }); connection.on(GameOver, (result: object){ showMessage(游戏结束, Game Over\n ${JSON.stringify(result)}); });客户端调用服务器端方法调用服务器端方法没有返回值connection.send(CheckQuestionAnswer, { QuestionId: questionId, Answer: tbMessage.value, }, gameId);调用服务器端方法并获取返回值connection.invoke(CheckQuestionAnswer, { QuestionId: questionId, Answer: tbMessage.value, }, gameId) .then(result { console.log(result); showMessage(答案检查结果${result.Succeeded}, JSON.stringify(result)); });websocket 直接连接 signalR创建 websocket 连接let connection new WebSocket(${Constants.HubUrl}?access_token${Constants.TestToken});连接成功后发送使用协议信息signalr 发送的消息均以 0x1e 这个字符结尾在发送消息的时候需要在消息的最后增加 0x1e 字符connection.onopen (event) { // console.log(event); connection.send({protocol:json, version:1}${String.fromCharCode(0x1e)}); }以上代码表示我们要使用 JSON 的形式进行消息的序列化如果有较高的性能要求也可以使用 messagePack 二进制序列化消息内容对浏览器要求较高需要支持 xhr2)接受服务器端消息connection.onmessage (event) { var msg event.data.replace(String.fromCharCode(0x1e), ); //替换消息结束符 console.log(received message: ${msg}); let eventData JSON.parse(msg); if(eventData.type 1 eventData.target){ // type为1表示调用客户端的某一个方法 let func: (...args:any[])any callbacks[eventData.target]; if(func ! undefined){ func(...eventData.arguments); } } }定义客户端方法callbacks[GameAnswerResultReceived] (result:any){ showMessage(收到问题${result.QuestionId} 答案, JSON.stringify(result)); }; callbacks[GameOver] (result){ showMessage(游戏结束, Game Over\n ${JSON.stringify(result)}); };调用服务器端方法// 可以把这个方法扩展为 WebSocket 的一个原型方法 function invokeMethod(webSocket: WebSocket, methodName:string, ...args: any[]) : Promisevoid { // type为1表示调用远程的方法(一个 RPC 调用)target为要调用的方法名称arguments为要调用的方法的参数 webSocket.send(${JSON.stringify({ arguments: args, target: methodName, type: 1, })}${String.fromCharCode(0x1e)}); return Promise.resolve(); }Memo上面的完全基于 websocket 去连接 signalr 的代码还有些简陋实际使用的话可以再修改优化一下强类型调用服务器端的方法自定义的话可以在 websocket 的基础上封装一下signalr 强类型调用服务器端方法还没找到解决办法不过问题不大有兴趣的话可以研究一下 signalR 源码Referencehttps://docs.microsoft.com/en-us/aspnet/core/signalr/javascript-client?viewaspnetcore-2.2https://docs.microsoft.com/en-us/aspnet/core/tutorials/signalr-typescript-webpack?viewaspnetcore-2.2tabsvisual-studiohttps://github.com/aspnet/AspNetCore/tree/master/src/SignalRhttps://github.com/aspnet/SignalR-samples
http://www.sadfv.cn/news/262169/

相关文章:

  • 有关网站建设的公众号百度网站置顶怎么做
  • 广州企业网站推广策划方案淘宝网页版怎么看直播
  • 移动端网站和app区别wordpress最新主题下载地址
  • 给网站做翻译营销公司是什么意思
  • 青岛做网站哪里好郑州营销网站建设公司
  • 建手机端网站海淀区社区建设网站
  • 建建建设网站app市场调研报告
  • 网站建设流程报价如何更换网站服务商
  • 网站没有icp备案是不是就是骗子wordpress修改自定义尺寸logo
  • 成都网站建设07fly上传视频网站开发
  • 南宁网站建设公司seo优化零基础网站建设
  • 芜湖网站开发公司优化网站的软件下载
  • 重庆网站供奉wordpress购物插件
  • 网站做三屏合一建筑模板规格一览表
  • 温州教育网站建设小企业网站建设和管理
  • 运营网站流程wordpress插件ssh
  • 集约化网站群建设情况网站如何提高用户量
  • 有没有做文创的网站旅游网站建设的市场分析
  • 九江网站建设哪家好网站的页面大小
  • 网站的推广和宣传方式阜阳室内设计学校
  • 网站建设需准备什么软件北京人力资源网站
  • 网站自动收录深圳快照优化
  • 北京做家政网站有哪些平台wordpress安全
  • 做旅行社业务的网站都有哪些茶类网站建设方案
  • WordPress建站 seowordpress 打开变慢
  • 易网官方网站北京王府井百货大楼关闭
  • 如何去掉wordpress版权信息大泽山seo快速排名
  • 建设局查询网站做网站电话销售的话术
  • 网站网站娱乐建设六安网约车
  • 美的网站建设水平swot分析主题网络图怎么设计