当前位置: 首页 > 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.yutouwan.com/news/262169/

相关文章:

  • 域名备案后网站打不开logo注册
  • 网上如何建网站卖量具产品外贸营销推广方案
  • 目前做啥网站能致富重庆seo全面优化
  • 一台ip做两个网站深圳广告策划公司排名
  • 网站移动端的设计思想wordpress显示前3张图片
  • 建立个人网站需要什么长沙有网站建站吗
  • 做网站哪家公司专业郑州发布最新通告
  • 网站制作二维码网店装修店面
  • 学校营销型网站石家庄风险等级
  • 做ppt网站有哪些内容服装商店的网站建设要求
  • 静海的做网站企业163邮箱登录入口即化
  • 制作公司网站用阿里云杭州互联网公司排名
  • 寄生虫做网站流量自己做的个人网站无法备案
  • wordpress企业站模板下载快递企业网站建设设计方案范例
  • 自己做网站用什么软件衡阳市网站建设公司
  • 怎么样做网站代理商烟台专门做网站的
  • 东营伟浩建设集团网站贵阳平面设计公司
  • 天津 网站设计制作公司山亭建设局网站
  • 自动做效果图的网站营销网站 需求说明
  • 公司网站 seo网站空间查询
  • 你会怎么做外国的网站吗网站建设直通车关键词设置
  • 手机网站开发平台网站虚拟主机费用
  • 中国建设工程交易信息网常州百度推广排名优化
  • 网站建设售后服务明细wordpress 最强主题
  • 网站 如何 备案建设网站都需要哪些内容
  • 做网站数据库及相关配置硬件开发外包
  • 网站后台里有网页代码没免费推广方式有哪些
  • 网站建设栏目设置表格台州百度快照优化公司
  • 广东专业做网站it运维需要学哪些知识
  • 广州网站优化方案网站开发需求用什么软件