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

jsp网站部署怎么做wordpress 手动升级

jsp网站部署怎么做,wordpress 手动升级,广东省建设信息网网站,万网空间 wordpress传统业务实现 Websocket 并不难#xff0c;然而函数计算基本上都是事件驱动#xff0c;不支持长链接操作。如果将函数计算与 API 网关结合#xff0c;是否可以有 Websocket 的实现方案呢#xff1f;API 网关触发器实现 WebsocketWebSocket 协议是基于 TCP 的一种新的网络协…传统业务实现 Websocket 并不难然而函数计算基本上都是事件驱动不支持长链接操作。如果将函数计算与 API 网关结合是否可以有 Websocket 的实现方案呢API 网关触发器实现 WebsocketWebSocket 协议是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工 (full-duplex) 通信即允许服务器主动发送信息给客户端。WebSocket 在服务端有数据推送需求时可以主动发送数据至客户端。而原有 HTTP 协议的服务端对于需推送的数据仅能通过轮询或 long poll 的方式来让客户端获得。由于云函数是无状态且以触发式运行即在有事件到来时才会被触发。因此为了实现 WebSocket云函数 SCF 与 API 网关相结合通过 API 网关承接及保持与客户端的连接。您可以认为云函数与 API 网关一起实现了服务端。当客户端有消息发出时会先传递给 API 网关再由 API 网关触发云函数执行。当服务端云函数要向客户端发送消息时会先由云函数将消息 POST 到 API 网关的反向推送链接再由 API 网关向客户端完成消息的推送。具体的实现架构如下对于 WebSocket 的整个生命周期主要由以下几个事件组成连接建立客户端向服务端请求建立连接并完成连接建立数据上行客户端通过已经建立的连接向服务端发送数据数据下行服务端通过已经建立的连接向客户端发送数据客户端断开客户端要求断开已经建立的连接服务端断开服务端要求断开已经建立的连接。对于 WebSocket 整个生命周期的事件云函数和 API 网关的处理过程如下连接建立客户端与 API 网关建立 WebSocket 连接API 网关将连接建立事件发送给 SCF数据上行客户端通过 WebSocket 发送数据API 网关将数据转发送给 SCF数据下行SCF 通过向 API 网关指定的推送地址发送请求API 网关收到后会将数据通过 WebSocket 发送给客户端客户端断开客户端请求断开连接API 网关将连接断开事件发送给 SCF服务端断开SCF 通过向 API 网关指定的推送地址发送断开请求API 网关收到后断开 WebSocket 连接。因此云函数与 API 网关之间的交互需要由 3 类云函数来承载注册函数在客户端发起和 API 网关之间建立 WebSocket 连接时触发该函数通知 SCF WebSocket 连接的 secConnectionID。通常会在该函数记录 secConnectionID 到持久存储中用于后续数据的反向推送清理函数在客户端主动发起 WebSocket 连接中断请求时触发该函数通知 SCF 准备断开连接的 secConnectionID。通常会在该函数清理持久存储中记录的该 secConnectionID传输函数在客户端通过 WebSocket 连接发送数据时触发该函数告知 SCF 连接的 secConnectionID 以及发送的数据。通常会在该函数处理业务数据。例如是否将数据推送给持久存储中的其他 secConnectionID。Websocket 功能实现根据腾讯云官网提供的该功能的整体架构图这里我们可以使用对象存储 COS 作为持久化的方案当用户建立链接存储 ConnectionId 到 COS 中当用户断开连接删除该链接 ID。其中注册函数# -*- coding: utf8 -*-import osfrom qcloud_cos_v5 import CosConfigfrom qcloud_cos_v5 import CosS3Clientbucket os.environ.get(bucket)region os.environ.get(region)secret_id os.environ.get(secret_id)secret_key os.environ.get(secret_key)cosClient CosS3Client(CosConfig(Regionregion, SecretIdsecret_id, SecretKeysecret_key))def main_handler(event, context): print(event is %s % event) connectionID event[websocket][secConnectionID] retmsg {} retmsg[errNo] 0 retmsg[errMsg] ok retmsg[websocket] { action: connecting, secConnectionID: connectionID } cosClient.put_object( Bucketbucket, Bodywebsocket.encode(utf-8), Keystr(connectionID), EnableMD5False ) return retmsg传输函数# -*- coding: utf8 -*-import osimport jsonimport requestsfrom qcloud_cos_v5 import CosConfigfrom qcloud_cos_v5 import CosS3Clientbucket os.environ.get(bucket)region os.environ.get(region)secret_id os.environ.get(secret_id)secret_key os.environ.get(secret_key)cosClient CosS3Client(CosConfig(Regionregion, SecretIdsecret_id, SecretKeysecret_key))sendbackHost os.environ.get(url)def Get_ConnectionID_List(): response cosClient.list_objects( Bucketbucket, ) return [eve[Key] for eve in response[Contents]]def send(connectionID, data): retmsg {} retmsg[websocket] {} retmsg[websocket][action] data send retmsg[websocket][secConnectionID] connectionID retmsg[websocket][dataType] text retmsg[websocket][data] data requests.post(sendbackHost, jsonretmsg)def main_handler(event, context): print(event is %s % event) connectionID_List Get_ConnectionID_List() connectionID event[websocket][secConnectionID] count len(connectionID_List) data event[websocket][data] (Online people: str(count) ) for ID in connectionID_List: if ID ! connectionID: send(ID, data) return send success清理函数# -*- coding: utf8 -*-import osimport requestsfrom qcloud_cos_v5 import CosConfigfrom qcloud_cos_v5 import CosS3Clientbucket os.environ.get(bucket)region os.environ.get(region)secret_id os.environ.get(secret_id)secret_key os.environ.get(secret_key)cosClient CosS3Client(CosConfig(Regionregion, SecretIdsecret_id, SecretKeysecret_key))sendbackHost os.environ.get(url)def main_handler(event, context): print(event is %s % event) connectionID event[websocket][secConnectionID] retmsg {} retmsg[websocket] {} retmsg[websocket][action] closing retmsg[websocket][secConnectionID] connectionID requests.post(sendbackHost, jsonretmsg) cosClient.delete_object( Bucketbucket, Keystr(connectionID), ) return eventYaml 文件如下Conf: component: serverless-global inputs: region: ap-guangzhou bucket: chat-cos-1256773370 secret_id: secret_key: myBucket: component: serverless/tencent-cos inputs: bucket: ${Conf.bucket} region: ${Conf.region}restApi: component: serverless/tencent-apigateway inputs: region: ${Conf.region} protocols: - http - https serviceName: ChatDemo environment: release endpoints: - path: / method: GET protocol: WEBSOCKET serviceTimeout: 800 function: transportFunctionName: ChatTrans registerFunctionName: ChatReg cleanupFunctionName: ChatCleanChatReg: component: serverless/tencent-scf inputs: name: ChatReg codeUri: ./code handler: reg.main_handler runtime: Python3.6 region: ${Conf.region} environment: variables: region: ${Conf.region} bucket: ${Conf.bucket} secret_id: ${Conf.secret_id} secret_key: ${Conf.secret_key} url: http://set-gwm9thyc.cb-guangzhou.apigateway.tencentyun.com/api-etj7lhtwChatTrans: component: serverless/tencent-scf inputs: name: ChatTrans codeUri: ./code handler: trans.main_handler runtime: Python3.6 region: ${Conf.region} environment: variables: region: ${Conf.region} bucket: ${Conf.bucket} secret_id: ${Conf.secret_id} secret_key: ${Conf.secret_key} url: http://set-gwm9thyc.cb-guangzhou.apigateway.tencentyun.com/api-etj7lhtwChatClean: component: serverless/tencent-scf inputs: name: ChatClean codeUri: ./code handler: clean.main_handler runtime: Python3.6 region: ${Conf.region} environment: variables: region: ${Conf.region} bucket: ${Conf.bucket} secret_id: ${Conf.secret_id} secret_key: ${Conf.secret_key} url: http://set-gwm9thyc.cb-guangzhou.apigateway.tencentyun.com/api-etj7lhtw注意这里需要先部署 API 网关。当部署完成获得回推地址将回推地址以 url 的形式写入到对应函数的环境变量中理论上应该是可以通过 ${restApi.url[0].internalDomain} 自动获得到 url 的但是我并没有成功获得到这个 url只能先部署 API 网关获得到这个地址之后再重新部署。部署完成之后我们可以编写 HTML 代码实现可视化的 Websocket Client其核心的 JavaScript 代码为window.onload function () { var conn; var msg document.getElementById(msg); var log document.getElementById(log); function appendLog(item) { var doScroll log.scrollTop log.scrollHeight - log.clientHeight; log.appendChild(item); if (doScroll) { log.scrollTop log.scrollHeight - log.clientHeight; } } document.getElementById(form).onsubmit function () { if (!conn) { return false; } if (!msg.value) { return false; } conn.send(msg.value); //msg.value ; var item document.createElement(div); item.innerText 发送↑:; appendLog(item); var item document.createElement(div); item.innerText msg.value; appendLog(item); return false; }; if (window[WebSocket]) { //替换为websocket连接地址 conn new WebSocket(ws://service-01era6ni-1256773370.gz.apigw.tencentcs.com/release/); conn.onclose function (evt) { var item document.createElement(div); item.innerHTML Connection closed.; appendLog(item); }; conn.onmessage function (evt) { var item document.createElement(div); item.innerText 接收↓:; appendLog(item); var messages evt.data.split(); for (var i 0; i messages.length; i) { var item document.createElement(div); item.innerText messages[i]; appendLog(item); } }; } else { var item document.createElement(div); item.innerHTML Your browser does not support WebSockets.; appendLog(item); }};完成之后我们打开两个页面进行测试总结通过云函数 API 网关进行 Websocket 的实践绝对不仅仅是一个聊天工具这么简单它可以用在很多方面例如通过 Websocket 进行实时日志系统的制作等。单独的函数计算仅仅是一个计算平台只有和周边的 BaaS 结合才能展示出 Serverless 架构的价值和真正的能力。这也是为什么很多人说 ServerlessFaaSBaaS 的一个原因。期待更多小伙伴可以通过 Serverless 架构创造出更多有趣的应用。我们诚邀您来体验最便捷的 Serverless 开发和部署方式。在试用期内相关联的产品及服务均提供免费资源和专业的技术支持帮助您的业务快速、便捷地实现 ServerlessServerless 极速部署只需三步Serverless Framework 是构建和运维 Serverless 应用的框架。简单三步即可通过 Serverless Framework 快速实现服务部署。1. 安装 ServerlessmacOS/Linux 系统推荐使用二进制安装$ curl -o- -L https://slss.io/install | bashWindows 系统可通过 npm 安装$ npm install -g serverless2. 创建云上应用在空文件夹下输入 serverless 命令$ serverless访问命令行中输出的链接即可访问成功部署后的应用。3. 查看部署信息进入到部署成功的文件夹运行如下命令查看部署状态和资源信息$ sls info
http://www.pierceye.com/news/518602/

相关文章:

  • 政务公开及网站建设意见网站的策划方案怎么写
  • 网站培训制度郑州建网站哪个公司好
  • 网站建设优化怎么做微信公众平台开发网站
  • 网站建设的什么是网站建设的第一阶段公司简介概况怎么写
  • 玛伊网站做兼职加入要多少钱装修房子的app软件哪个好
  • 免费空间asp网站公众号编辑器排行榜
  • 鲜花培训网站建设网站建设技术部奖惩制度
  • 国内优秀设计网站站长营销型网站建设 案例
  • 织梦网站维护唐山网站建设哪家专业
  • 网上打字兼职正规网站深圳各区房价一览表
  • 怎样建设网站是什么怎么看网站空间多大
  • 如何备份网站的手机版免费申请微网站
  • 淘宝不允许 网站建设wordpress页面无法编辑器
  • 个人怎么做课程网站seo神马网站推广器
  • 做购物比价的网站有哪些外贸移动商城网站建设
  • 网站开发的特点做直通车任务的网站
  • 分类信息系统网站模板wordpress黑客
  • 推荐一个代做毕业设计的网站云服务器怎么搭建
  • 网站制作计算机电商运营seo
  • 网站关键词分隔符建站用什么工具
  • 广元网站开发兰州电商平台网站建设
  • 网站怎么黑北京广告设计公司排行
  • 番禺网站排名推广优化排名网站开发类标书模板
  • 青海市住房和城乡建设厅网站关于网站建设的合同协议书
  • 中文企业网站模板下载wordpress付费知识
  • 网站设计图能用ps做么襄城县住房和城市建设局网站
  • 汕头市网站建设分站服务机构建设网站费用会计分录
  • 360网站推广wordpress 插件 定时
  • 企业设计网站公司易语言可以做网站嘛
  • 乐昌网站建设wordpress 自动推送