CN115473810B - 双端同步脚本热更新方法及装置 - Google Patents

双端同步脚本热更新方法及装置 Download PDF

Info

Publication number
CN115473810B
CN115473810B CN202211063738.3A CN202211063738A CN115473810B CN 115473810 B CN115473810 B CN 115473810B CN 202211063738 A CN202211063738 A CN 202211063738A CN 115473810 B CN115473810 B CN 115473810B
Authority
CN
China
Prior art keywords
client
server
script
update
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202211063738.3A
Other languages
English (en)
Other versions
CN115473810A (zh
Inventor
张东杰
白云杉
章伟刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhuhai Kingsoft Digital Network Technology Co Ltd
Original Assignee
Zhuhai Kingsoft Digital Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhuhai Kingsoft Digital Network Technology Co Ltd filed Critical Zhuhai Kingsoft Digital Network Technology Co Ltd
Priority to CN202211063738.3A priority Critical patent/CN115473810B/zh
Publication of CN115473810A publication Critical patent/CN115473810A/zh
Application granted granted Critical
Publication of CN115473810B publication Critical patent/CN115473810B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/082Configuration setting characterised by the conditions triggering a change of settings the condition being updates or upgrades of network functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请提供双端同步脚本热更新方法及装置,其中所述双端同步脚本热更新方法应用于服务器,包括:接收脚本热更新指令,其中,所述脚本热更新指令中携带有脚本更新信息;提取所述脚本更新信息中携带的服务端更新信息和客户端更新信息;确定与所述服务器连接的至少一个客户端;基于所述服务端更新信息更新所述服务器的服务端脚本,发送所述客户端更新信息至每个客户端,以使每个客户端基于所述客户端更新信息更新对应的客户端脚本。通过本申请提供的方法,实现了对客户端和服务端的实时更新,对于客户端推送修改的脚本文件的代码段,对用户而言是无感知的,提升用户的使用体验。

Description

双端同步脚本热更新方法及装置
技术领域
本申请涉及软件开发技术领域,特别涉及双端同步脚本热更新方法。本申请同时涉及双端同步脚本热更新装置及系统,一种计算设备,以及一种计算机可读存储介质。
背景技术
Lua是一种轻量脚本语言,其设计的目的是为了嵌入应用程序中,为应用程序提供灵活的扩展和定制功能,在手机游戏开发行业中,很多项目都会在技术栈选型中加入Lua脚本。在手游市场中,由于流量、渠道审核等原因,手游对更新内容的大小比较敏感,由于Lua的解析性语言和小巧的性质,很好的解决了这些问题。
目前Lua脚本热更新对于游戏的客户端、服务端这双端而言,无论是新功能需求还是修复bug,都会遇到客户端和服务端需要同步修改的代码逻辑改动,在这种传统的更新方式中往往效果不好,因为无法保证双端的更新同步,一般而言是服务端先更新到线上服务器,然后客户端陆续更新,会有很长一段时间处于双端代码不同步导致异常,或者需要制作更新时做各种繁琐的兼容。
发明内容
有鉴于此,本申请实施例提供了双端同步脚本热更新方法。本申请同时涉及双端同步脚本热更新装置及系统,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的上述问题。
根据本申请实施例的第一方面,提供了一种双端同步脚本热更新方法,应用于服务器,所述服务器中运行有服务端,包括:
接收脚本热更新指令,其中,所述脚本热更新指令中携带有脚本更新信息;
提取所述脚本更新信息中携带的服务端更新信息和客户端更新信息;
确定与所述服务端连接的至少一个客户端;
基于所述服务端更新信息更新所述服务端的服务端脚本,发送所述客户端更新信息至每个客户端,以使每个客户端基于所述客户端更新信息更新对应的客户端脚本。
根据本申请实施例的第二方面,提供了一种双端同步脚本热更新装置,应用于服务器,所述服务器中运行有服务端,包括:
接收模块,被配置为接收脚本热更新指令,其中,所述脚本热更新指令中携带有脚本更新信息;
提取模块,被配置为提取所述脚本更新信息中携带的服务端更新信息和客户端更新信息;
确定模块,被配置为确定与所述服务端连接的至少一个客户端;
更新模块,被配置为基于所述服务端更新信息更新所述服务端的服务端脚本,发送所述客户端更新信息至每个客户端,以使每个客户端基于所述客户端更新信息更新对应的客户端脚本。
根据本申请实施例的第三方面,提供了一种双端同步脚本热更新系统,包括:
服务器和客户端,所述服务器中运行有服务端;其中,
所述服务器,被配置为接收脚本热更新指令,其中,所述脚本热更新指令中携带有脚本更新信息,提取所述脚本更新信息中携带的服务端更新信息和客户端更新信息,确定与所述服务端连接的至少一个客户端,基于所述服务端更新信息更新所述服务端的服务端脚本,发送所述客户端更新信息至每个客户端;
所述客户端,被配置为接收所述客户端更新信息,基于所述客户端更新信息更新所述客户端的客户端脚本。
根据本申请实施例的第四方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述计算机指令时实现所述双端同步脚本热更新方法的步骤。
根据本申请实施例的第五方面,提供了一种计算机可读存储介质,其存储有计算机指令,该计算机指令被处理器执行时实现所述双端同步脚本热更新方法的步骤。
本申请提供的双端同步脚本热更新方法,应用于服务器,所述服务器中运行有服务端,包括接收脚本热更新指令,其中,所述脚本热更新指令中携带有脚本更新信息;提取所述脚本更新信息中携带的服务端更新信息和客户端更新信息;确定与所述服务端连接的至少一个客户端;基于所述服务端更新信息更新所述服务端的服务端脚本,发送所述客户端更新信息至每个客户端,以使每个客户端基于所述客户端更新信息更新对应的客户端脚本。
本申请一实施例实现了通过脚本热更新指令实现一键更新服务器和客户端的操作,而且是在与服务端进行连接的客户端中进行更新,保证了客户端和服务端的逻辑同步,同时,由于是热更新,只推送修改的脚本文件的代码段,脚本更新信息中携带的服务端更新信息和客户端更新信息内容较少,对于客户端而言更新的内容较小,数据传输也占用较少的流量资源,对于用户而言是无感知的,提升用户的使用体验。
附图说明
图1是本申请一实施例提供的一种双端同步脚本热更新方法的流程图;
图2是本申请一实施例提供的一种应用于手机游戏A的双端同步脚本热更新方法的处理流程图;
图3是本申请一实施例提供的双端同步脚本热更新系统的示意图;
图4是本申请一实施例提供的双端同步脚本热更新系统的流程时序图;
图5是本申请一实施例提供的一种双端同步脚本热更新装置的结构示意图;
图6是本申请一实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本申请一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本申请一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本申请一个或多个实施例涉及的名词术语进行解释。
热更新:热更新是一种软件常用的更新方式,是在不停机的前提下对系统进行更改,让用户获得资源和代码的变更。
在手机游戏开发行业中,很多公司或项目都会使用Lua脚本,目前市面上大部分的手游项目都用到了Lua脚本,是因为Lua脚本易于上手、便于实现底层代码和脚本之间权限分离,并且Lua脚本可以很好的支持热更新。
在手游市场中,手游的用户更容易流失,另外,由于流量收费方式和渠道审核等各种原因,手游更新对更新内容的大小非常敏感,游戏开发者需要控制每次更新的大小,由于Lua的解析性语言和小巧的性质,很好的解决了这些问题。
目前Lua热更新的解决方案分为服务端和客户端两个部分:
服务端:将需要热更新的内容存储到一个Lua文件中,将这个Lua文件推送到服务端所在机器的指定路径下,通过外部通知或定时检查,触发读取文件内容并解析执行的逻辑。
客户端:将有修改到的脚本文件整体生成更新包,把更新包上传至CDN(ContentDelivery Network,内容分发网络)节点上,等客户端登录时从CDN触发下载更新。
目前的热更新方法存在一些局限性:
对于服务端的热更新操作,需要经历制作待执行的热更新脚本文件-推送文件至所有服务器(当服务器数量多的时候,需要另外的运维平台群发推送),对每个进程发送外部信号触发执行热更新等几个步骤,比较繁琐,而且还不知道执行结果,需要在热更新脚本中预埋日志,并通过日志进行查询验证执行是否成功。
对于客户端的热更新操作,需要经历编写热更新脚本文件-制作CDN热更新包-推送更新包到CDN服务器(对于不同刷新策略的CDN,可能还会有手动刷新的步骤)等,另外,因为散文件不便于管理,一般客户端资源管理中都会把脚本、配置表等打成一个包,这会出现虽然至修改了一个很小(比如100Byte大小)的Lua脚本文件,确导致客户端下载数Mb,甚至数十Mb的更新,然而,局限性最突出的地方还不在此,而是在于玩家的客户端不是实时更新、而是需要等待玩家的下一次CDN检查和触发时机,大部分做法是在客户端启动的时候,另外一部分是在登录进入游戏场景时,但是无论是哪一个时机都具有很大延时性,或者遇到了客户端引发宕机的问题,会因为更新时机无法控制而无法实时更新客户端。
对于客户端和服务端这双端而言,无论是新功能需求还是修复漏洞,都会遇到客户端和服务端需要同步修改的代码逻辑改动,在这种传统的更新方式中往往效果不好,因为无法保证双端的更新同步,一般而言都是服务端先更新到线上服务器,然后客户端陆续更新,会有很长一段时间处于双端代码不同步导致异常,或者需要制作更新时做出各种繁琐的兼容。
基于此,在本申请中,提供了双端同步脚本热更新方法,本申请同时涉及双端同步脚本热更新装置及系统,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图1示出了根据本申请一实施例提供的一种双端同步脚本热更新方法的流程图,该方法应用于服务器,具体包括以下步骤:
步骤102:接收脚本热更新指令,其中,所述脚本热更新指令中携带有脚本更新信息。
本申请提供的方法,应用于服务器,本申请中所提及的服务器,具体是指运行应用程序的终端设备,在实际应用中,服务器可以是具体的某一台运行有服务端应用程序的终端,也可以是分布式服务集群中的服务器,也可以是云存储功能的云服务器。
脚本热更新指令具体是指用于对服务端和客户端进行热更新的指令,在实际应用中,一个业务应用对应有服务端和客户端,服务端具体是指业务应用运行在服务器中的应用程序,客户端具体是指业务应用运行在用户使用终端中的应用程序。脚本热更新指令用于更新服务端和客户端中的信息。
在脚本热更新指令中携带有脚本更新信息,其中,脚本更新信息具体是指用于更新服务端和客户端的脚本内容。通过脚本更新信息可以对服务端和客户端进行热更新。
在实际应用中,服务器需要保证脚本热更新指令的安全性和有效性,即需要保证脚本热更新指令是安全的,基于此,在本申请提供的一具体实施方式中,在接收脚本热更新指令之前,所述方法还包括:
接收接口开放请求,其中,所述接口开放请求中携带有预设地址;
为所述预设地址开放热更新接口。
具体的,当开发人员操作服务器时,会与服务器进行连接,为了便于传输数据方便且安全,服务器可以指对特定的地址开放访问权限,此时就需要开发人员向服务器申请,基于此,通常由开发人员向服务器发起接口开放请求,在接口开放请求中携带有预设地址,该预设地址可以是IP地址、MAC地址等等,在本申请中对此不做限定。
服务器在接收到该接口开放请求后,为该预设地址开放热更新接口,通过该热更新接口接收脚本热更新指令。并且开发人员只能通过该预设地址与服务器开放的热更新接口进行数据交互。
在实际应用中,该热更新接口可以通过WEB页面或开发工具的形式展示给开发人员,开发人员可以在开发工具或WEB页面的界面上选择区、服选择插件,在脚本输入框中输入相应的脚本更新信息。选择发送按钮后,生成脚本更新指令,并通过该热更新接口将该脚本更新指令发送至服务器。
在本申请提供的方法中,服务器对外开放一个足够安全、带鉴权验证的热更新接口,该热更新接口用于接收开发人员发送的脚本更新信息。通过该接口,保证了开发人员发送的脚本更新信息的安全性。
步骤104:提取所述脚本更新信息中携带的服务端更新信息和客户端更新信息。
在实际应用中,对脚本进行热更新时,通常是需要对服务端和客户端同时进行更新,因此,在脚本更新信息中通常是包括两类信息,分别为服务端更新信息和客户端更新信息,其中,服务端更新信息具体是指用于对服务端进行热更新的Lua脚本内容;客户端更新信息具体是指用于对客户端进行热更新的Lua脚本内容。
在实际应用中,为了保证数据的安全,还可以对接收到的数据进行鉴权校验,具体的,提取所述脚本更新信息中携带的服务端更新信息和客户端更新信息,包括:
对所述脚本更新信息进行鉴权验证;
在所述脚本更新信息通过鉴权验证的情况下,提取所述脚本更新信息中携带的服务端更新信息和客户端更新信息。
当脚本更新信息通过热更新接口发送到服务器之后,需要在服务器中对该脚本更新信息进行鉴权验证,当通过鉴权验证的情况下,说明该数据是合法数据,再进行后续从脚本更新信息中提取服务端更新信息和客户端更新信息的操作;当鉴权验证未通过的情况下,则需要丢弃该脚本更新信息,无需做其他操作。
脚本更新信息的主要部分是2个字符串,其中一个字符串用于填充服务端更新信息,一个字符串用于填充客户端更新信息。
在实际应用中,这2个字符串的位置可以是预先配置好的,也可以通过相应的标识来进行识别的,具体的,提取所述脚本更新信息中携带的服务端更新信息和客户端更新信息,包括:
在所述脚本更新信息中查询服务端标识和客户端标识;
基于所述服务端标识提取所述服务端更新信息,基于所述客户端标识提取所述客户端更新信息。
其中,服务端标识和客户端标识分别是指用于标识这每个字符串是属于哪个更新信息的,例如服务端标识可以为Server,客户端标识可以为Client,当字符串有Server标识时,表示该字符串为服务端更新信息;当字符串有Client标识时,表示该字符串为客户端更新信息。
在脚本更新信息中确定服务端标识和客户端标识之后,可以确定服务端标识所在的字符串内容为服务端更新信息;客户端标识所在的字符串内容为客户端更新信息。从而可以在脚本更新信息中提取服务端标识对应的服务端更新信息,在脚本更新信息中提取客户端标识对应的客户端更新信息。
步骤106:确定与所述服务端连接的至少一个客户端。
如上述实施例中所述,客户端具体是指业务应用运行在用户使用终端中的应用程序,在实际应用中,当用户使用业务应用时,通常是使用终端上的客户端,与运行在服务器中的服务端进行通信交互,例如,对于某款游戏A,用户使用手机,通过操作运行在手机中的客户端应用程序,与服务器中的游戏A的服务端进行通信交互,从而实现玩游戏A的效果。
在本申请提供的双端同步脚本热更新方法中,需要同时对客户端和服务端进行热更新,因此,需要确定与服务器连接的客户端都有哪些,在脚本热更新时,需要及时对正在与服务器进行通信连接的客户端进行更新,保证客户端和服务端上的脚本内容保持一致性。
具体的,确定与所述服务端连接的至少一个客户端,包括:
读取所述服务端对应的客户端连接信息;
基于所述客户端连接信息确定与所述服务端连接的至少一个客户端。
在实际应用中,每个与服务器连接的客户端都会在服务器中保存有客户端连接信息,客户端连接信息可以保存在服务器的日志中,也可以保存在服务器的业务数据库中,也可以保存在服务器的内存中,在本申请中,对客户端连接信息的具体保存位置不做限定,以实际应用为准。
在客户端连接信息中保存有在当前时刻有哪些客户端与服务端保持着通信连接,即有哪些客户端此时在与服务器进行通信。这些与服务器进行通信的客户端即为与服务器连接的客户端。优选的,客户端连接信息是保存在服务器的内存中,内存的读写速度快、响应迅速,能提高客户端连接信息的读写效率。在应用程序中存储一个句柄号,通过操作系统来操作该句柄,操作包括接收客户端连接、关闭客户端连接、接收该客户端连接发送的数据,给客户端连接发送数据等等。
在获取到客户端连接信息之后,即可读取在客户端连接信息中可以确定每个与服务端进行通信的客户端的标识信息,例如客户端MAC地址、客户端IP地址等信息,根据客户端连接信息中的客户端标识信息,即可确定与服务端连接的至少一个客户端。
在本申请提供的一具体实施方式中,以客户端连接信息保存在服务器的内存中为例进行解释说明,客户端连接信息保存在服务器的内存中,便于服务器实时读取,提高读写效率。在服务器内存中的客户端标识信息为C1、C2、C3、C5,则可以确定每个客户端标识信息对应的客户端即为与服务器连接的客户端,即客户端为客户端C1、客户端C2、客户端C3和客户端C5。
步骤108:基于所述服务端更新信息更新所述服务端的服务端脚本,发送所述客户端更新信息至每个客户端,以使每个客户端基于所述客户端更新信息更新对应的客户端脚本。
其中,服务端脚本具体是指运行在服务器上,服务端对应的脚本文件,客户端脚本具体是指运行在用户使用终端上的客户端对应的脚本文件。在上述步骤中已经获取了脚本更新信息中的服务端更新信息和客户端更新信息,则可以根据服务端更新信息对服务端脚本进行脚本更新,根据客户端更新信息对客户端脚本进行脚本更新。
基于此,在提取了服务端更新信息后,即可根据服务端更新信息更新位于服务器的服务端脚本,再将客户端更新信息发送至每个与服务器进行连接的客户端,以使每个客户端在接收到客户端更新信息之后,根据客户端更新信息对每个客户端上的客户端脚本进行脚本更新。
具体的,在本申请提供的一具体实施方式中,基于所述服务端更新信息更新所述服务端的服务端脚本,包括:
解析所述服务端更新信息,获得服务端执行代码;
在所述服务器中执行所述服务端执行代码,其中,所述服务端执行代码用于更新服务端脚本。
在实际应用中,在服务器中根据LoadString(脚本解析)对服务端更新信息进行脚本解析,获得用于对服务端脚本进行更新的服务端执行代码,即该服务端执行代码用于对服务端脚本进行更新。
在获得服务端执行代码之后,即可将服务端执行代码输入到Pcall(代码块执行)接口中进行更新脚本的代码逻辑,在执行完服务端执行代码后,即可完成更新服务端脚本的工作。
相应的,对客户端脚本进行更新的逻辑与服务端脚本的相似,对于每个客户端,在接收到客户端更新信息后,在客户端根据LoadString对客户端更新信息进行解析,获得客户端执行代码,再将客户端执行代码输入至Pcall接口中执行客户端执行代码,从而完成更新客户端脚本的工作。
需要注意的是,脚本热更新具体是指在不停机的前提下对系统进行更改,在此时更新的也都是与服务器连接的客户端,对于还未登录的客户端,此时也并没有版本更新的提示,还需要对在本次热更新之后登录的客户端进行脚本更新,对于此,还需要将客户端更新信息保存在服务器的服务器内存中,用于当再有客户端与服务器进行连接时,将客户端更新信息发送至新加入的客户端,从而对新加入客户端的客户端脚本进行脚本更新。基于此,在本申请提供的另一具体实施方式中,所述方法还包括:
将所述客户端更新信息保存至所述服务器的服务器内存。
在本实施例中,客户端更新信息还需要保存至服务器的服务器内存中,由于是热更新,放入到服务器内存中,会使得客户端更新信息的读取速度更快,响应更迅速。
相应的,在本申请提供的另一具体实施方式中,所述方法还包括:
接收待连接客户端发送的连接指令;
响应于所述连接指令,与所述待连接客户端建立连接,并将所述客户端更新信息发送至所述待连接客户端,以使所述待连接客户端基于所述客户端更新信息对所述待连接客户端的客户端脚本进行更新。
待连接客户端可以理解为在脚本热更新指令之后,新连接到服务器的客户端,此时的待连接客户端向服务器发送了连接指令,用于与服务端进行通信连接。此时,在服务器接收到该连接指令后,与该待连接客户端建立通信连接,此时还需要从服务器内存中获取到客户端更新信息,并将该客户端更新信息同步发送至待连接客户端,以使待连接客户端也可以根据该客户端更新信息对待连接客户端的客户端脚本进行脚本更新。
在实际应用中,服务器接收待连接客户端发起的连接请求,响应于该连接请求与该待连接客户端建立网络通信连接,同时接收该待连接客户端发起的账号登录请求,在账号登录请求通过认证,确认为合法客户端后,从服务器内存中读取到客户端更新信息,并将客户端更新信息发送至该待连接客户端。通过本方法,可以保证了在后续连接到服务器的每个客户端都可以及时的进行脚本更新。
需要注意的是,在本申请中的双端同步脚本热更新方法,都是不停机的更新,热更新仅对正在运行的客户端脚本进行更新,如果一个客户端在退出之后,再次与服务器连接时,还会再次接收一次客户端更新信息,并对客户端脚本进行脚本更新。
通过本申请提供的双端同步脚本热更新方法,应用于服务器,包括接收脚本热更新指令,其中,所述脚本热更新指令中携带有脚本更新信息;提取所述脚本更新信息中携带的服务端更新信息和客户端更新信息;确定与所述服务器连接的至少一个客户端;基于所述服务端更新信息更新所述服务器的服务端脚本,发送所述客户端更新信息至每个客户端,以使每个客户端基于所述客户端更新信息更新对应的客户端脚本。
通过本方法,可以通过脚本热更新指令实现一键更新服务器和客户端的操作,而且是在与服务器进行连接的客户端中进行更新,保证了客户端和服务端的逻辑同步,同时,由于是热更新,只推送修改的脚本文件的代码段,脚本更新信息中携带的服务端更新信息和客户端更新信息内容较少,对于客户端而言更新的内容较小,数据传输也占用较少的流量资源,对于用户而言是无感知的,提升用户的使用体验。
本方法对在线的客户端进行实时更新,对于新加入的客户端也在加入时进行实时更新,极大的提升了时效性,同时客户端更新对用户而言也是无感知的,避免了用户因频繁更新或流量问题而流失,保证了用户的粘性。
下述结合附图2,以本申请提供的双端同步脚本热更新方法在手机游戏A的应用为例,对所述双端同步脚本热更新方法进行进一步说明。其中,图2示出了本申请一实施例提供的一种应用于手机游戏A的双端同步脚本热更新方法的处理流程图,该方法应用于手机游戏A的服务器,具体包括以下步骤:
步骤202:提供带鉴权验证的数据接口。
步骤204:接收开发人员基于该数据接口发送的脚本热更新指令,其中,在脚本热更新指令中携带有脚本更新信息I。
步骤206:在脚本更新信息I中查询服务端标识Server和客户端标识Client。
步骤208:基于服务端标识Server在脚本更新信息I中提取服务端更新信息Iserver,基于客户端标识Client在脚本更新信息I中提取客户端更新信息Iclient。
步骤210:解析该服务端更新信息Iserver,获得服务端执行代码Servercode。
步骤212:执行服务端执行代码Servercode,完成服务端脚本更新。
步骤214:缓存客户端更新信息Iclient,并将客户端更新信息Iclient发送至与服务端连接的在线客户端,以使每个在线客户端基于客户端更新信息Iclient进行客户端脚本更新。
步骤216:接收新登录客户端的登录请求。
步骤218:将客户端更新信息Iclient发送至新登录客户端,以使新登录客户端基于客户端更新信息Iclient进行客户端脚本更新。
图3示出了本申请一实施例提供的双端同步脚本热更新系统的示意图,如图3所示,该双端同步脚本热更新系统包括服务器302和客户端304,其中,所述服务器302中运行有服务端,客户端为与服务端连接的在线客户端。
所述服务器302,被配置为接收脚本热更新指令,其中,所述脚本热更新指令中携带有脚本更新信息,提取所述脚本更新信息中携带的服务端更新信息和客户端更新信息,确定与所述服务端连接的至少一个客户端304,基于所述服务端更新信息更新所述服务端的服务端脚本,发送所述客户端更新信息至每个客户端304;
所述客户端304,被配置为接收所述客户端更新信息,基于所述客户端更新信息更新所述客户端的客户端脚本。
本申请提供更多双端同步脚本热更新系统,实现了一键更新服务器脚本和客户端脚本的功能,提高了脚本更新的便捷性,同时保证了服务端和客户端间的脚本逻辑同步。同时客户端更新信息只是修改的脚本代码段,对于客户端而言,更新的内容容量较小,客户端无感,避免了用户因为更新频繁而导致的用户流失,同时可以实时更新每个在线客户端,提升了更新时效性,提升了用户使用体验。
图4示出了本申请一实施例提供的双端同步脚本热更新系统的流程时序图,如图4所示。
开发人员使用操作平台,在操作平台上输入热更新内容,该热更新内容包括服务端更新信息和客户端更新信息。并通过安全接口将该热更新内容发送至游戏服务器。
游戏服务器接收热更新内容,从热更新内容中提取出服务端更新信息和客户端更新信息。执行服务端更新信息,对服务器脚本进行脚本更新;缓存客户端更新信息,并将客户端更新信息广播给所有在线的客户端。
在线客户端在接收到游戏服务器发送的客户端更新信息后,执行客户端更新信息,对客户端脚本进行更新。并向服务器返回更新执行结果。
当有新登录的客户端需要登录时,向游戏服务器发送登录请求,游戏服务器在验证通过后,同意该新登录的客户端的连接请求,并将缓存在游戏服务器中的客户端更新信息推送给新登录的客户端。
新登录的客户端在接收到游戏服务器发送的客户端更新信息后,执行客户端更新信息,对客户端脚本进行更新。并向服务器返回更新执行结果。
本申请提供更多双端同步脚本热更新系统,实现了一键更新服务器脚本和客户端脚本的功能,提高了脚本更新的便捷性,同时保证了服务端和客户端间的脚本逻辑同步。同时客户端更新信息只是修改的脚本代码段,对于客户端而言,更新的内容容量较小,客户端无感,避免了用户因为更新频繁而导致的用户流失,同时可以实时更新每个在线客户端,提升了更新时效性,提升了用户使用体验。
与上述双端同步脚本热更新方法实施例相对应,本申请还提供了双端同步脚本热更新装置实施例,图5示出了本申请一实施例提供的一种双端同步脚本热更新装置的结构示意图。如图5所示,该装置包括:
接收模块502,被配置为接收脚本热更新指令,其中,所述脚本热更新指令中携带有脚本更新信息;
提取模块504,被配置为提取所述脚本更新信息中携带的服务端更新信息和客户端更新信息;
确定模块506,被配置为确定与所述服务端连接的至少一个客户端;
更新模块508,被配置为基于所述服务端更新信息更新所述服务端的服务端脚本,发送所述客户端更新信息至每个客户端,以使每个客户端基于所述客户端更新信息更新对应的客户端脚本。
可选的,所述装置还包括:
请求接收模块,被配置为接收接口开放请求,其中,所述接口开放请求中携带有预设地址;
开放模块,被配置为为所述预设地址开放热更新接口。
可选的,所述提取模块504,进一步被配置为:
对所述脚本更新信息进行鉴权验证;
在所述脚本更新信息通过鉴权验证的情况下,提取所述脚本更新信息中携带的服务端更新信息和客户端更新信息。
可选的,所述提取模块504,进一步被配置为:
在所述脚本更新信息中查询服务端标识和客户端标识;
基于所述服务端标识提取所述服务端更新信息,基于所述客户端标识提取所述客户端更新信息。
可选的,所述确定模块506,进一步被配置为:
读取所述服务端对应的客户端连接信息;
基于所述客户端连接信息确定与所述服务端连接的至少一个客户端。
可选的,所述更新模块508,进一步被配置为:
解析所述服务端更新信息,获得服务端执行代码;
在所述服务器中执行所述服务端执行代码,其中,所述服务端执行代码用于更新服务端脚本。
可选的,所述装置还包括:
保存模块,被配置为将所述客户端更新信息保存至所述服务器的服务器内存。
可选的,所述装置还包括:
连接接收模块,被配置为接收待连接客户端发送的连接指令;
信息发送模块,被配置为响应于所述连接指令,与所述待连接客户端建立连接,并将所述客户端更新信息发送至所述待连接客户端,以使所述待连接客户端基于所述客户端更新信息对所述待连接客户端的客户端脚本进行更新。
通过本装置,可以通过脚本热更新指令实现一键更新服务器和客户端的操作,而且是在与服务器进行连接的客户端中进行更新,保证了客户端和服务端的逻辑同步,同时,由于是热更新,只推送修改的脚本文件的代码段,脚本更新信息中携带的服务端更新信息和客户端更新信息内容较少,对于客户端而言更新的内容较小,数据传输也占用较少的流量资源,对于用户而言是无感知的,提升用户的使用体验。
本装置对在线的客户端进行实时更新,对于新加入的客户端也在加入时进行实时更新,极大的提升了时效性,同时客户端更新对用户而言也是无感知的,避免了用户因频繁更新或流量问题而流失,保证了用户的粘性。
上述为本实施例的一种双端同步脚本热更新装置的示意性方案。需要说明的是,该双端同步脚本热更新装置的技术方案与上述的双端同步脚本热更新方法的技术方案属于同一构思,双端同步脚本热更新装置的技术方案未详细描述的细节内容,均可以参见上述双端同步脚本热更新方法的技术方案的描述。
图6示出了根据本申请一实施例提供的一种计算设备600的结构框图。该计算设备600的部件包括但不限于存储器610和处理器620。处理器620与存储器610通过总线630相连接,数据库650用于保存数据。
计算设备600还包括接入设备640,接入设备640使得计算设备600能够经由一个或多个网络660通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备640可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本申请的一个实施例中,计算设备600的上述部件以及图6中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图6所示的计算设备结构框图仅仅是出于示例的目的,而不是对本申请范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备600可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备600还可以是移动式或静止式的服务器。
其中,处理器620执行所述计算机指令时实现所述的双端同步脚本热更新方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的双端同步脚本热更新方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述双端同步脚本热更新方法的技术方案的描述。
本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该计算机指令被处理器执行时实现如前所述双端同步脚本热更新方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的双端同步脚本热更新方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述双端同步脚本热更新方法的技术方案的描述。
上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本申请的内容,可作很多的修改和变化。本申请选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。

Claims (12)

1.一种双端同步脚本热更新方法,其特征在于,应用于服务器,所述服务器中运行有服务端,包括:
接收脚本热更新指令,其中,所述脚本热更新指令中携带有脚本更新信息,所述脚本更新信息用于对服务端和客户端进行热更新;
提取所述脚本更新信息中携带的服务端更新信息和客户端更新信息,其中,所述客户端更新信息是用于对客户端进行更新的脚本内容;
确定与所述服务端连接的至少一个客户端;
基于所述服务端更新信息更新所述服务端的服务端脚本,发送所述客户端更新信息至每个客户端,以使每个客户端基于所述客户端更新信息更新对应的客户端脚本。
2.如权利要求1所述的方法,其特征在于,在接收脚本热更新指令之前,所述方法还包括:
接收接口开放请求,其中,所述接口开放请求中携带有预设地址;
为所述预设地址开放热更新接口。
3.如权利要求1所述的方法,其特征在于,提取所述脚本更新信息中携带的服务端更新信息和客户端更新信息,包括:
对所述脚本更新信息进行鉴权验证;
在所述脚本更新信息通过鉴权验证的情况下,提取所述脚本更新信息中携带的服务端更新信息和客户端更新信息。
4.如权利要求1所述的方法,其特征在于,提取所述脚本更新信息中携带的服务端更新信息和客户端更新信息,包括:
在所述脚本更新信息中查询服务端标识和客户端标识;
基于所述服务端标识提取所述服务端更新信息,基于所述客户端标识提取所述客户端更新信息。
5.如权利要求1所述的方法,其特征在于,确定与所述服务端连接的至少一个客户端,包括:
读取所述服务端对应的客户端连接信息;
基于所述客户端连接信息确定与所述服务端连接的至少一个客户端。
6.如权利要求1所述的方法,其特征在于,基于所述服务端更新信息更新所述服务端的服务端脚本,包括:
解析所述服务端更新信息,获得服务端执行代码;
在所述服务器中执行所述服务端执行代码,其中,所述服务端执行代码用于更新服务端脚本。
7.如权利要求1所述的方法,其特征在于,所述方法还包括:
将所述客户端更新信息保存至所述服务器的服务器内存。
8.如权利要求1所述的方法,其特征在于,所述方法还包括:
接收待连接客户端发送的连接指令;
响应于所述连接指令,与所述待连接客户端建立连接,并将所述客户端更新信息发送至所述待连接客户端,以使所述待连接客户端基于所述客户端更新信息对所述待连接客户端的客户端脚本进行更新。
9.一种双端同步脚本热更新装置,其特征在于,应用于服务器,所述服务器中运行有服务端,包括:
接收模块,被配置为接收脚本热更新指令,其中,所述脚本热更新指令中携带有脚本更新信息,所述脚本更新信息用于对服务端和客户端进行热更新;
提取模块,被配置为提取所述脚本更新信息中携带的服务端更新信息和客户端更新信息,其中,所述客户端更新信息是用于对客户端进行更新的脚本内容;
确定模块,被配置为确定与所述服务端连接的至少一个客户端;
更新模块,被配置为基于所述服务端更新信息更新所述服务端的服务端脚本,发送所述客户端更新信息至每个客户端,以使每个客户端基于所述客户端更新信息更新对应的客户端脚本。
10.一种双端同步脚本热更新系统,其特征在于,包括:
服务器和客户端,所述服务器中运行有服务端;其中,
所述服务器,被配置为接收脚本热更新指令,其中,所述脚本热更新指令中携带有脚本更新信息,提取所述脚本更新信息中携带的服务端更新信息和客户端更新信息,确定与所述服务端连接的至少一个客户端,基于所述服务端更新信息更新所述服务端的服务端脚本,发送所述客户端更新信息至每个客户端,所述脚本更新信息用于对服务端和客户端进行热更新,所述客户端更新信息是用于对客户端进行更新的脚本内容;
所述客户端,被配置为接收所述客户端更新信息,基于所述客户端更新信息更新所述客户端的客户端脚本。
11.一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,其特征在于,所述处理器执行所述计算机指令时实现权利要求1-8任意一项所述方法的步骤。
12.一种计算机可读存储介质,其存储有计算机指令,其特征在于,该计算机指令被处理器执行时实现权利要求1-8任意一项所述方法的步骤。
CN202211063738.3A 2022-09-01 2022-09-01 双端同步脚本热更新方法及装置 Active CN115473810B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211063738.3A CN115473810B (zh) 2022-09-01 2022-09-01 双端同步脚本热更新方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211063738.3A CN115473810B (zh) 2022-09-01 2022-09-01 双端同步脚本热更新方法及装置

Publications (2)

Publication Number Publication Date
CN115473810A CN115473810A (zh) 2022-12-13
CN115473810B true CN115473810B (zh) 2024-04-26

Family

ID=84369066

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211063738.3A Active CN115473810B (zh) 2022-09-01 2022-09-01 双端同步脚本热更新方法及装置

Country Status (1)

Country Link
CN (1) CN115473810B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117093354A (zh) * 2023-10-19 2023-11-21 北京轻松怡康信息技术有限公司 一种脚本管理的方法、装置、设备和可读存储介质

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103024052A (zh) * 2012-12-17 2013-04-03 北京奇虎科技有限公司 实现浏览器数据同步的系统和方法
CN104486393A (zh) * 2014-12-08 2015-04-01 畅捷通信息技术股份有限公司 资源配置与回收方法和资源配置与回收系统
WO2017124962A1 (zh) * 2016-01-21 2017-07-27 阿里巴巴集团控股有限公司 一种应用热部署方法、装置和系统
CN107423079A (zh) * 2017-03-10 2017-12-01 武汉斗鱼网络科技有限公司 一种同步脚本的方法、解析消息的方法和设备
CN108037946A (zh) * 2017-11-03 2018-05-15 金证财富南京科技有限公司 一种应用程序热更新的方法、系统及服务器
CN109725923A (zh) * 2018-12-27 2019-05-07 广州华多网络科技有限公司 一种软件轻量更新方法、装置及设备
CN109800005A (zh) * 2018-12-06 2019-05-24 广州西山居世游网络科技有限公司 一种客户端热更新方法及装置
CN110851359A (zh) * 2019-11-07 2020-02-28 网易(杭州)网络有限公司 应用程序测试方法、装置及服务器
CN113296817A (zh) * 2021-06-18 2021-08-24 杭州玳数科技有限公司 前端资源的静默更新方法、装置和计算机设备
CN113722126A (zh) * 2021-09-09 2021-11-30 北京沃东天骏信息技术有限公司 一种请求处理方法和装置
CN114338776A (zh) * 2021-12-24 2022-04-12 完美世界(重庆)互动科技有限公司 游戏请求的处理方法、装置、计算机设备及可读存储介质
CN114928610A (zh) * 2022-05-12 2022-08-19 优车库网络科技发展(深圳)有限公司 数据更新的通知方法、数据处理方法、装置、设备和介质

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103024052A (zh) * 2012-12-17 2013-04-03 北京奇虎科技有限公司 实现浏览器数据同步的系统和方法
CN104486393A (zh) * 2014-12-08 2015-04-01 畅捷通信息技术股份有限公司 资源配置与回收方法和资源配置与回收系统
WO2017124962A1 (zh) * 2016-01-21 2017-07-27 阿里巴巴集团控股有限公司 一种应用热部署方法、装置和系统
CN107423079A (zh) * 2017-03-10 2017-12-01 武汉斗鱼网络科技有限公司 一种同步脚本的方法、解析消息的方法和设备
CN108037946A (zh) * 2017-11-03 2018-05-15 金证财富南京科技有限公司 一种应用程序热更新的方法、系统及服务器
CN109800005A (zh) * 2018-12-06 2019-05-24 广州西山居世游网络科技有限公司 一种客户端热更新方法及装置
CN109725923A (zh) * 2018-12-27 2019-05-07 广州华多网络科技有限公司 一种软件轻量更新方法、装置及设备
CN110851359A (zh) * 2019-11-07 2020-02-28 网易(杭州)网络有限公司 应用程序测试方法、装置及服务器
CN113296817A (zh) * 2021-06-18 2021-08-24 杭州玳数科技有限公司 前端资源的静默更新方法、装置和计算机设备
CN113722126A (zh) * 2021-09-09 2021-11-30 北京沃东天骏信息技术有限公司 一种请求处理方法和装置
CN114338776A (zh) * 2021-12-24 2022-04-12 完美世界(重庆)互动科技有限公司 游戏请求的处理方法、装置、计算机设备及可读存储介质
CN114928610A (zh) * 2022-05-12 2022-08-19 优车库网络科技发展(深圳)有限公司 数据更新的通知方法、数据处理方法、装置、设备和介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Design and implementation of a platform independent synchronization using WCF web-services;C. Rama Krishna等;《2015 Communication, Control and Intelligent Systems (CCIS)》;20160324;全文 *
基于HTML5的WebSocket同步实时交互表单模型研究;李龙;;网络安全技术与应用;20160315(03);全文 *

Also Published As

Publication number Publication date
CN115473810A (zh) 2022-12-13

Similar Documents

Publication Publication Date Title
CN106874389B (zh) 数据的迁移方法和装置
CN109525624B (zh) 一种容器登录方法、装置及存储介质
US20030182408A1 (en) Load test system for a server and method of use
JP6754011B2 (ja) 音声サービスを提供するための方法、装置およびサーバ
CN110855676B (zh) 网络攻击的处理方法、装置及存储介质
JP7483929B2 (ja) 共同トレーニングモデルを評価するための方法及び装置
CN104702624A (zh) 基于CloudStack平台虚拟机登录方法及系统
CN115473810B (zh) 双端同步脚本热更新方法及装置
CN112988485A (zh) 电力物联网设备模拟测试方法及装置
CN110851359A (zh) 应用程序测试方法、装置及服务器
CN107800781A (zh) 一种配置数据处理方法和装置
CN106488534A (zh) 获取网络接入点的方法及系统
CN108345606A (zh) 网页资源的获取方法和装置
CN114465867B (zh) 服务器的维护方法、装置、存储介质及处理器
CN113641582A (zh) 混合模式移动应用调试方法及系统
CN114244556B (zh) 一种协议代理方法及装置
CN113641581A (zh) 混合模式移动应用调试方法及系统
CN106161501A (zh) 虚拟桌面的数据共享方法和装置
Hine et al. Scalable emulation of enterprise systems
CN110213310A (zh) 一种网络服务的路径获取方法、装置和存储介质
CN114915566A (zh) 应用识别方法、装置、设备及计算机可读存储介质
CN111596953A (zh) 版本管理系统、开发数据传输控制方法及相关装置
CN113641580A (zh) 混合模式移动应用调试方法及系统
CN112328498A (zh) 业务的测试方法和装置、存储介质、电子装置
CN113626330A (zh) 混合模式移动应用调试方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant