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

个人音乐网站开发新手怎么样学做网站

个人音乐网站开发,新手怎么样学做网站,贵阳专业防水堵漏,工业设计在线前言 在线上办公如火如荼的今天#xff0c;多人协作功能是每个应用绕不开的门槛。processflow在线流程图#xff08;前身基于drawio二次开发#xff09;沉寂两年之久#xff0c;经过长时间设计开发#xff0c;调整#xff0c;最终完成了多人协作的核心模块设计。废话不多…前言 在线上办公如火如荼的今天多人协作功能是每个应用绕不开的门槛。processflow在线流程图前身基于drawio二次开发沉寂两年之久经过长时间设计开发调整最终完成了多人协作的核心模块设计。废话不多说上操作视频展示下效果 Video_2023-09-04_150131 多人协作技术原理剖析 秉着都2023年了谁还重复造轮子的理念这里现学现用利用了一些商业成熟的技术和软件来实现自己的目标。主要用到了两点技术 利用websocket的pushsubscribe实现多人之间的行为共享鼠标点击移动图标内容变更利用onedrive实现历史快照文件的存储 client生产事件主要分为以下几种 switch (data.action){//传递鼠标移动和点击事件case message:processMsg(data.msg, data.from);break;case clientsList:clientsList(data.msg);break;case signal:signal(data.msg);break;case newClient:newClient(data.msg);break;case clientLeft:clientLeft(data.msg);break;case sendSignalFailed:sendSignalFailed(data.msg);break;} server端主要作用就是接收client端的各个事件然后对事件进行处理然后广播出去 比如newClient新客户端加入server端会将clientId和session记录到缓存中然后将新的clientId广播出去所有的客户端接收到有新协作者加入后会进行相关准备操作。 clientLeft当有客户端下线也会将session剔除然后广播出去所有客户端会将下线的client的光标移除。 push队列主要对各个客户端的事件进行排序。幂等操作然后发布。  存储端 主要用onedrive进行存储历史版本管理冲突解决。这里插一句不要问为什么用onedrive因为drawio集成了onedrive这里不想重写一套新的文件操作api直接用现成的了。鉴于国内对onedrive网络支持的不太友好这也是为什么迟迟不上线的原因之一后续考虑将接口统一走后端代理由后端统一访问onedrive。 private Response contactOAuthServer(String authSrvUrl, String code, String refreshToken, String secret,String client, String redirectUri, boolean directResp, int retryCount) {HttpURLConnection con null;Response response new Response();try {URL obj new URL(authSrvUrl);con (HttpURLConnection) obj.openConnection();con.setRequestMethod(POST);boolean jsonResponse false;StringBuilder urlParameters new StringBuilder();if (postType X_WWW_FORM_URLENCODED) {con.setRequestProperty(Content-Type, application/x-www-form-urlencoded);if (withAcceptJsonHeader) {con.setRequestProperty(Accept, application/json);}urlParameters.append(client_id);urlParameters.append(Utils.encodeURIComponent(client, UTF-8));urlParameters.append(client_secret);urlParameters.append(Utils.encodeURIComponent(secret, UTF-8));if (code ! null) {if (withRedirectUrl) {urlParameters.append(redirect_uri);urlParameters.append(Utils.encodeURIComponent(redirectUri, UTF-8));}urlParameters.append(code);urlParameters.append(Utils.encodeURIComponent(code, UTF-8));urlParameters.append(grant_typeauthorization_code);} else {if (withRedirectUrlInRefresh) {urlParameters.append(redirect_uri);urlParameters.append(Utils.encodeURIComponent(redirectUri, UTF-8));}urlParameters.append(refresh_token);urlParameters.append(Utils.encodeURIComponent(refreshToken, UTF-8));urlParameters.append(grant_typerefresh_token);jsonResponse true;}} else if (postType JSON) {con.setRequestProperty(Content-Type, application/json);JsonObject urlParamsObj new JsonObject();urlParamsObj.addProperty(client_id, client);urlParamsObj.addProperty(redirect_uri, redirectUri);urlParamsObj.addProperty(client_secret, secret);if (code ! null) {urlParamsObj.addProperty(code, code);urlParamsObj.addProperty(grant_type, authorization_code);} else {urlParamsObj.addProperty(refresh_token, refreshToken);urlParamsObj.addProperty(grant_type, refresh_token);jsonResponse true;}urlParameters.append(urlParamsObj.toString());}// Send post requestcon.setDoOutput(true);DataOutputStream wr new DataOutputStream(con.getOutputStream());wr.writeBytes(urlParameters.toString());wr.flush();wr.close();BufferedReader in new BufferedReader(new InputStreamReader(con.getInputStream()));String inputLine;StringBuffer authRes new StringBuffer();while ((inputLine in.readLine()) ! null) {authRes.append(inputLine);}in.close();response.status con.getResponseCode();Gson gson new Gson();JsonObject json gson.fromJson(authRes.toString(), JsonElement.class).getAsJsonObject();String accessToken getAccessToken(json);int expiresIn getExpiresIn(json);response.refreshToken getRefreshToken(json);response.accessToken accessToken;JsonObject respObj new JsonObject();respObj.addProperty(access_token, accessToken);if (expiresIn -1) {respObj.addProperty(expires_in, expiresIn);}if (directResp) {response.content respObj.toString();} else {// Writes JavaScript coderesponse.content processAuthResponse(respObj.toString(), jsonResponse);}} catch (IOException e) {StringBuilder details new StringBuilder();if (con ! null) {try {BufferedReader in new BufferedReader(new InputStreamReader(con.getErrorStream()));String inputLine;while ((inputLine in.readLine()) ! null) {System.err.println(inputLine);details.append(inputLine);details.append(\n);}in.close();} catch (Exception e2) {// Ignore}}if (e.getMessage() ! null e.getMessage().contains(401)) {response.status HttpServletResponse.SC_UNAUTHORIZED;} else if (retryCount 0 e.getMessage() ! null e.getMessage().contains(Connection timed out)) {return contactOAuthServer(authSrvUrl, code, refreshToken, secret,client, redirectUri, directResp, --retryCount);} else {response.status HttpServletResponse.SC_INTERNAL_SERVER_ERROR;e.printStackTrace();log.error(AUTH-SERVLET: [ authSrvUrl ] ERROR: e.getMessage() - details.toString());}if (DEBUG) {StringWriter sw new StringWriter();PrintWriter pw new PrintWriter(sw);e.printStackTrace(pw);pw.println(details.toString());pw.flush();response.content sw.toString();}}return response;} 感悟心得 开源不易请大家多给drawio点点star没有他就没有中国繁荣的流程图商业化盛景...拿着人家的代码来挣钱一个start也不愿意给人家点。可悲。 虽然作者挺操蛋的多人协作的代码没有开源我只能靠研究官方网站的协作功能和数据格式一点点猜测用到了哪些逻辑白板转流程图的代码也没开源。不过我觉得他做的挺对的农夫与蛇的故事见的太多了。所以我决定和他一样让白嫖的人踩坑去吧这里只做原理讲解不提供源码内容。
http://www.dnsts.com.cn/news/218101.html

相关文章:

  • 淄博网站建设推广优化如何衡量一个网站的价值
  • 企业为什么选择网站建设网站举报多久有结果
  • 微信微网站统计怎么做类似淘宝一样的网站吗
  • 做盗版电影网站赚钱龙岗网站建设公司怎么样
  • 重庆企业网站的推广西部数码网站助手4.0
  • 网站建设谈单思路手机网页代码
  • 南京营销型网站制作网站群发手机短信
  • 那个网站做境外自由行便宜南充建设企业网站
  • 义乌网站建设公司排名网站的页面布局是什么样的
  • 网站建设排名优化自动生成代码
  • 乌兰察布做网站的公司wordpress 取消自适应
  • 广州市增城建设局网站电商平台投诉
  • 八年级做网站杭州做宠物网站的公司哪家好
  • 点播视频网站怎么建设四川省建设厅官方网站首页
  • 青海省网站建设公司哪家好房地产公司网站建设报价方案
  • 上海正规做网站公司电话网站交易平台
  • 自己做配图的网站html网站模板资源
  • 资阳网站建设方案wordpress 打包 exe
  • 凡科建站小程序asp.net 网站管理工具 遇到错误
  • 烟台网站建设联系企汇互联专业wordpress 清楚jq
  • 国际电子商务网站建设电商网站介绍
  • 旅游网站开发需求文档模板下载wordpress个性化后台
  • .电子商务网站规划泰兴网站建设公司
  • 网站产品内页设计蚂蜂窝网站分析
  • 可以做游戏的网站有哪些方面做网站推广的公司
  • 衡阳网站优化实时新闻在哪里能查到
  • 海川建设公司网站手机ps在线图片编辑
  • seo云优化seo教程 百度网盘
  • 答题网站怎么做驻马店市可以做网站的公司
  • 宁波企业建站程序成都建站免费模板