CN114915651B - WebSocket的管理方法、装置、电子设备及存储介质 - Google Patents

WebSocket的管理方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN114915651B
CN114915651B CN202110181160.0A CN202110181160A CN114915651B CN 114915651 B CN114915651 B CN 114915651B CN 202110181160 A CN202110181160 A CN 202110181160A CN 114915651 B CN114915651 B CN 114915651B
Authority
CN
China
Prior art keywords
websocket
connection
monitoring
state
preset
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
CN202110181160.0A
Other languages
English (en)
Other versions
CN114915651A (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.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu 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 Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN202110181160.0A priority Critical patent/CN114915651B/zh
Publication of CN114915651A publication Critical patent/CN114915651A/zh
Application granted granted Critical
Publication of CN114915651B publication Critical patent/CN114915651B/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
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0811Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking connectivity
    • 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/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/143Termination or inactivation of sessions, e.g. event-controlled end of session
    • H04L67/145Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例公开了一种WebSocket的管理方法、装置、电子设备及存储介质。该方法包括:向服务器发送Websocket连接请求,通过预先定义的监听对象调用预设Websocket管理类中的监听状态连接方法,确定所述Websocket的连接状态;在检测到所述Websocket的连接状态处于未连接状态时,调用所述预设Websocket管理类中的连接方法,建立与服务器的Websocket连接。本发明实施例的技术方案,实现了在发生异常的情况时WebSocket能够动态连接,从而降低了程序开发成本高,提升了程序的可维护性、健壮性以及适应性。

Description

WebSocket的管理方法、装置、电子设备及存储介质
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种WebSocket的管理方法、装置、电子设备及存储介质。
背景技术
WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
传统的WebSocket的管理方法通常是需要开发人员手动对WebSocket进行管理,由于WebSocket的创建、释放的逻辑繁琐,导致程序开发成本高、可维护性差。很容易在发生异常的情况时就出现自动断开,无法动态连接,导致程序健壮性差、适应性低。
发明内容
本发明实施例提供了一种WebSocket的管理方法、装置、电子设备及存储介质,以实现了在发生异常的情况时WebSocket能够动态连接,从而降低了程序开发成本高,提升了程序的可维护性、健壮性以及适应性。
第一方面,本发明实施例提供了一种Websocket的管理方法,该方法包括:
向服务器发送Websocket连接请求,通过预先定义的监听对象调用预设Websocket管理类中的监听状态连接方法,确定所述Websocket的连接状态;
在检测到所述Websocket的连接状态处于未连接状态时,调用所述预设Websocket管理类中的连接方法,建立与服务器的Websocket连接。
第二方面,本发明实施例还提供了一种Websocket的管理装置,该装置包括:
连接状态确定模块,用于向服务器发送Websocket连接请求,通过预先定义的监听对象调用预设Websocket管理类中的监听状态连接方法,确定所述Websocket的连接状态;
Websocket连接建立模块,用于在检测到所述Websocket的连接状态处于未连接状态时,调用所述预设Websocket管理类中的连接方法,建立与服务器的Websocket连接。
第三方面,本发明实施例还提供了一种电子设备,该电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述程序被所述处理器执行,使得所述处理器实现如本发明任意实施例所提供的Websocket的管理方法。
第四方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如本发明任意实施例所提的Websocket的管理方法。
本实施例的技术方案,通过向服务器发送Websocket连接请求,通过预先定义的监听对象调用预设Websocket管理类中的监听状态连接方法,确定Websocket的连接状态。通过监听对象调用监听状态连接方法可以实时确定Websocket的连接状态,以便于实时监听Websocket的连接状态。在检测到Websocket的连接状态处于未连接状态时,调用预设Websocket管理类中的连接方法,建立与服务器的Websocket连接。解决了现有技术中WebSocket的管理方法很容易在发生异常的情况时就出现自动断开,无法动态连接,导致程序健壮性差、适应性低的技术问题,实现了在发生异常的情况时,WebSocket能够动态连接,从而达到了降低程序开发成本高,提升了程序的可维护性、健壮性以及适应性的效果。
附图说明
为了更加清楚地说明本发明示例性实施例的技术方案,下面对描述实施例中所需要用到的附图做一简单介绍。显然,所介绍的附图只是本发明所要描述的一部分实施例的附图,而不是全部的附图,对于本领域普通技术人员,在不付出创造性劳动的前提下,还可以根据这些附图得到其他的附图。
图1是本发明实施例一提供的一种WebSocket的管理方法的流程示意图;
图2是本发明实施例二提供的一种WebSocket的管理方法的流程示意图;
图3是本发明实施例三提供的一种Websocket的管理装置模块示意图;
图4是本发明实施例四提供的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1是本发明实施例一提供的一种WebSocket的管理方法的流程示意图,本实施例可适用于通过调用监听状态连接方法,确定Websocket的连接状态,在检测到Websocket的连接状态为未连接状态,调用连接方法,建立与服务器的Websocket连接的情况,该方法可以由WebSocket的管理装置来执行,WebSocket的管理装置可通过软件和/或硬件方式实现,该WebSocket的管理装置可集成于诸如计算机或者服务器等的电子设备中。
如图1所示,本实施例的方法包括:
S110、向服务器发送Websocket连接请求,通过预先定义的监听对象调用预设Websocket管理类中的监听状态连接方法,确定Websocket的连接状态。
其中,Websocket管理类可以通过关键字class预先设置的类。示例性的,Websocket管理类的类名称可以为WSManager,预先设置Websocket管理类可以为classWSManager{}。Websocket管理类可以用于实现客户端与服务器之间Websocket的动态连接的功能,以使客户端与服务器之间可以实现数据传输。
其中,Websocket连接请求可以理解为向服务器发送的一次握手请求,可以用于建立与服务器创建持久性的连接,以使客户端与服务器之间进行双向数据传输。可选的,在检测到用于获取服务器数据所对应的控件被触发时,向服务器发送Websocket连接请求。
其中,监听对象可以是预先在Websocket管理类中定义WebSocketListener类型的私有监听方法所返回的对象。示例性的,预先定义一个私有监听方法,如,private funcreateListener(){}。然后,将私有监听方法的类型的设置为WebSocketListener类型,如,private fun createListener():WebSocketListener{}。在WebSocketListener类型的私有监听方法中,通过返回值关键字(return),得到WebSocketListener类型的监听对象(object),如return object:WebSocketListener(){}。监听对象的类型是WebSocketListener类型。需要说明的是,监听对象的激活方式,也就是监听对象的赋值方式是通过调用WebSocketListener类中的构造方法实现的,即,object:WebSocketListener()。监听对象可以用于实时监听Websocket的连接状态,以及时得到当前Websocket的连接状态。
其中,监听状态连接方法可以是在Websocket管理类中复写WebSocketListener类中的监听状态连接方法。复写WebSocketListener类中的监听状态连接方法的原因在于:父类与子类之间的多态性,子类可以对父类中的方法进行重新定义,也就是说,Websocket管理类和WebSocketListener类之间存在继承关系,具体的,Websocket管理类为子类,WebSocketListener类为父类,即,Websocket管理类可以对WebSocketListener类中的监听状态连接方法进行重新定义。需要说明的是,监听状态连接方法可以用于判断当前的WebSocket的连接状态。
具体的,预先设置Websocket管理类。预先在Websocket管理类中定义WebSocketListener类型的监听方法,且监听方法的返回值为WebSocketListener类型的对象。预先在Websocket管理类中复写WebSocketListener类中的监听状态连接方法。在检测到用于获取服务器数据所对应的控件被触发时,向服务器发送Websocket连接请求。当Websocket连接请求发送完成时,通过调用Websocket管理类中WebSocketListener类型的监听方法,当监听方法执行完成时,得到监听方法的返回对象,即,得到监听对象。通过监听对象调用Websocket管理类中复写WebSocketListener类中的监听状态连接方法。根据监听状态连接方法,确定Websocket的连接状态。
可选的,所述通过预先定义的监听对象调用预设Websocket管理类中的监听状态连接方法,确定所述Websocket的连接状态,包括:通过所述监听状态连接方法中的连接判断方法,对所述Websocket的连接状态进行判断,得到所述Websocket的连接状态的判断结果;根据所述判断结果,确定所述Websocket的连接状态。
其中,连接判断方法可以是预先设定的方法。连接判断方法可以用于判断当前时刻Websocket的连接状态。示例性的,连接判断方法的方法名称可以为isConnectServer,相应的连接判断方法可以为isConnectServer()。Websocket的连接状态的判断结果可以理解为连接判断方法的返回值。连接判断方法的返回值包括0和1,即Websocket的连接状态的判断结果包括0和1。预先设置判断结果与Websocket的连接状态之间的对应关系,具体的,当Websocket的连接状态的判断结果为0时,Websocket的连接状态为未连接状态;当Websocket的连接状态的判断结果为1时,Websocket的连接状态为连接状态。
具体的,在检测到用于获取服务器数据所对应的控件被触发时,向服务器发送Websocket连接请求。当Websocket连接请求发送完成时,通过在监听状态连接方法中调用预先定义的连接判断方法。在检测到连接判断方法执行完成时,得到连接判断方法的返回值,即,得到Websocket的连接状态的判断结果。根据判断结果,确定Websocket的连接状态。
S120、在检测到Websocket的连接状态处于未连接状态时,调用预设Websocket管理类中的连接方法,建立与服务器的Websocket连接。
其中,未连接状态可以理解为Websocket的连接状态处于断开状态或失败状态。连接方法可以是预先在Websocket管理类中设定的私有方法。示例性的,连接方法的方法名为connect,通过关键字fun定义连接方法,即fun connect(){},通过关键字private,将连接方法封装为私有方法,即private fun connect(){}。连接方法可以用于建立客户端与服务器之间的Websocket连接。将连接方法设定为私有方法的原因在于:私有的连接方法只能在Websocket管理类内访问,在Websocket管理类的类外私有的连接方法需要通过公用的类接口才可以访问。同时,这样处理的好处在于可以提升数据传输的安全性。
具体的,预先在Websocket管理类中定义用于连接Websocket的语句,并将用于连接Websocket的语句封装为私有的连接方法。在检测到Websocket的连接状态处于未连接状态时,在Websocket管理类中通过调用私有连接方法,建立与服务器的Websocket连接,以使客户端与服务器之间可以通信,保障数据的传输。
在上述实施例的基础上,为了便于对Websocket管理类中对象的获取以及管理,可以预先在Websocket管理类中定义一个静态代码块,例如,companion object{}。并在静态代码块中通过常量声明关键字val定义一个Websocket管理类型的对象(instance),如valinstance:WSManager。
为了降低类与类之间的耦合度,可以通过关键字by将instance对象进行委托,并通过调用lazy方法将instance对象委托为懒加载模式(如,by lazy()),且加载模式(mode)设置为线程同步模式(如,mode=LazyThreadSafetyMode.SYNCHRONIZED),这样处理的好处在于:能够适应高并发场景,提升程序的适应性。
示例性的,将instance对象进行委托的语句可以是:val instance:WSManager bylazy(mode=LazyThreadSafetyMode.SYNCHRONIZED){}。
为了对Websocket管理类中对象的获取以及管理,可以在委托代码块中,调用Websocket管理类的构造方法,并返回Websocket管理类型的对象,将返回Websocket管理类型的对象赋值给instance对象,示例性的,val instance:WSManager by lazy(mode=LazyThreadSafetyMode.SYNCHRONIZED){WSManager()}。本实施例,可以通过对instance对象对Websocket管理类中对象的获取以及管理。
本实施例的技术方案,通过向服务器发送Websocket连接请求,通过预先定义的监听对象调用预设Websocket管理类中的监听状态连接方法,确定Websocket的连接状态。通过监听对象调用监听状态连接方法可以实时确定Websocket的连接状态,以便于实时监听Websocket的连接状态。在检测到Websocket的连接状态处于未连接状态时,调用预设Websocket管理类中的连接方法,建立与服务器的Websocket连接。解决了现有技术中WebSocket的管理方法很容易在发生异常的情况时就出现自动断开,无法动态连接,导致程序健壮性差、适应性低的技术问题,实现了在发生异常的情况时,WebSocket能够动态连接,从而达到了降低程序开发成本高,提升了程序的可维护性、健壮性以及适应性的效果。
实施例二
图2是本发明实施例二提供的一种WebSocket的管理方法的流程示意图,在上述实施例的基础上,在向服务器发送Websocket连接请求之前,可以在Websocket管理类中,基于初始化定义语句,将网络请求对象和协议对象,初始化为空。通过将网络请求对象和协议对象初始化为空,便于在信息传递时,提高初始化为空的网络请求对象和协议对象的复用性。在将网络请求对象和协议对象,初始化为空之后,可以将Websocket的连接地址变量和预设接口类型的信息变量,作为预设Websocket管理类中的初始化方法的入口参数,调用初始化方法,通过初始化方法,对初始化为空的网络请求对象进行赋值。通过对网络请求对象进行赋值,设置连接的读超时时间,写入超时时间,以及连接超时时间。
此外,本发明实施例在上述实施例的基础上,可以在检测到预先定义的监听对象调用的监听连接方法为监听连接失败的方法时,得到Websocket连接失败的信息,将Websocket连接失败的信息传递给初始化为空的协议对象,通过调用初始化为空的协议对象中的连接失败的回调信息方法,得到连接失败回调信息。通过得到连接失败的回调信息,便于开发人员及时了解Websocket的连接状态。
本实施例的方法具体可包括:
S210、在Websocket管理类中,基于初始化定义语句,将网络请求对象和协议对象,初始化为空。
其中,初始化的含义可以是创建对象并赋予对象一个初始值。初始化可以是为对象赋初值的做法。为对象赋初值的好处在于可以减少出现错误(Bug)的可能性。初始化语句可以用于为对象进行初始化。其中,Websocket管理类中的对象可以包括网络请求对象、请求对象、连接对象以及协议对象。
其中,网络请对对象可以是OkHttpClient类型的私有对象。网络请求对象的定义方式可以是:通过关键字var申明OkHttpClient类型的网络请求对象(如,okHttpClient),如,var okHttpClient:OkHttpClient。通过关键字私有的(private)将申明的网络请求对象定义为私有的对象,如,private var okHttpClient:OkHttpClient。网络请求对象的初始值可以为空,如,private var okHttpClient:OkHttpClient?=null。网络请求对象可以用于向服务器请求Websocket的连接。
其中,协议对象可以是IReceiveMessage类型的私有对象。协议对象的定义方式可以是:通过关键字var申明IReceiveMessage类型的协议对象(如,receiveMessage),如,varreceiveMessage:IReceiveMessage。通过关键字私有的(private)将申明的协议对象定义为私有的对象,如,private var receiveMessage:IReceiveMessage。协议对象的初始值可以为空,如,private var receiveMessage:IReceiveMessage?=null。协议对象可以用于将Websocket的连接状态信息同步至调用接口使用。
可选的,在定义协议对象之前,预先通过关键字接口(interface)定义协议接口(IreceiveMessage),如,interface IreceiveMessage{}。其中,协议接口至少可以包括以下方法的定义:连接成功的回调信息方法、连接失败的回调信息方法、连接关闭的回调信息方法以及收到消息的方法。具体的,可以通过方法定义关键字fun定义连接成功的回调信息方法,如,fun onConnectSuccess()。可以通过方法定义关键字fun定义连接失败的回调信息方法,如,fun onConnectFailed()。可以通过方法定义关键字fun定义连接关闭的回调信息方法,如,fun onClose()。可以通过方法关键字fun定义收到消息的方法,其中,收到消息的方法的参数可以是接收到的消息内容,且参数的类型可以是字符串类型,如,funonMessage(text:String?)。
需要说明的是,协议接口中定义的连接成功的回调信息方法、连接失败的回调信息方法、连接关闭的回调信息方法以及收到消息的方法可以是回调方法,即,当Websocket连接成功,自动调用onConnectSuccess();当Websocket连接失败,自动调用onConnectFailed();Websocket连接关闭,自动调用onClose();当客户端接收到服务器发送的消息时,自动调用onMessage(text:String?)。
可选的,在所述Websocket管理类中,基于初始化定义语句,将请求对象和连接对象,初始化为空。
其中,请求对象可以是Request类型的私有对象。请求对象的定义方式可以是:通过关键字var申明Request类型的请求对象(如,request),如,var request:Request。通过关键字私有的(private)将申明的请求对象定义为私有的对象,如,private var request:Request。请求对象的初始值可以为空,如,private var request:Request?=null。请求对象可以理解为在向服务器请求Websocket的连接时携带的客户端的信息,其中,客户端的信息可以是客户端的标识。
其中,连接对象可以是WebSocket类型的私有对象。连接对象的定义方式可以是:通过关键字var申明WebSocket类型的连接对象(如,mWebSocket),如var mWebSocket:WebSocket。通过关键字私有的(private)将申明的连接对象定义为私有的对象,如,private var mWebSocket:WebSocket。连接对象的初始值可以为空,如,private varmWebSocket:WebSocket?=null。连接对象可以用于实现与服务器的Websocket的连接。
具体的,预先定义OkHttpClient类、Request类、WebSocket类。预先定义IReceiveMessage接口。在向服务器发送Websocket连接请求之前,可以在预先设置的Websocket管理类中,基于初始化定义语句,将OkHttpClient类型的私有的网络请求对象、Request类型的私有的请求对象、WebSocket类型的私有的连接对象以及IReceiveMessage类型的私有的协议对象,初始化为空。
S220、将Websocket的连接地址变量和预设接口类型的信息变量,作为所述预设Websocket管理类中的初始化方法的入口参数,调用初始化方法;通过初始化方法,对初始化为空的网络请求对象进行赋值。
其中,初始化方法可以用于对初始值为空的网络请求对象进行赋值。初始化方法的入口参数可以包括Websocket的连接地址变量和消息变量,如,fun init(wsUrl:String,receiveMessage:IReceiveMessage){}。其中,Websocket的连接地址变量可以是字符串(String)类型的形式参数变量,如,wsUrl:String。Websocket的连接地址变量可以用于接收Websocket的连接的地址。消息变量可以是协议接口类型的形式参数变量。消息变量可以用于接收消息,以使接收到的消息传递给初始化为空的协议对象。
其中,消息变量的名称可以和协议对象的名称相同。示例性的,协议对象的名称为receiveMessage,消息变量的名称为receiveMessage。需要说明的是,协议对象为初始化方法外的变量,即,协议对象可以是全局变量。消息变量为初始化方法的形式参数,即,消息变量可以是局部变量。可选的,为了避免变量名称相同,数据传递出现错误,在初始化方法中,通过this指针将方法中的消息变量传递于对方法中的局部变量receiveMessage进行赋值,如,this.receiveMessage=receiveMessage。需要说明的是this.receiveMessage可以是消息变量。
其中,在初始化方法中,可以对初始化为空的网络请求对象进行赋值,为初始化为空的网络请求对象的赋值可以是基于Builder机制构建OkHttpClient类型的对象并进行赋值。具体的,可以通过调用OkHttpClient类中的Builder()方法,得到一个builder对象,如,OkHttpClient.Builder()。可以通过调用builder中的设置连接的读取超时时间的方法readTimeout()、设置连接的写入超时时间的方法writeTimeout()、设置连接的连接超时时间的方法connectTimeout(),分别对连接的读超时时间、连接的写入超时时间、连接超时时间进行设置。在连接的读超时时间、连接的写入超时时间、连接超时时间设置完成时,通过调用build()方法构建一个OkHttpClient类型的对象。在OkHttpClient类型的对象构建完成时,将构建完成的OkHttpClient类型的对象赋值给初始化为空的网络请求对象。
需要说明的是,Builder机制是一步一步创建一个复杂对象的创建型模式,开发人员可以在不知道内部构建细节的情况下,更精细的控制对象的构造流程。该机制是为了将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示隔离开来。
具体的,通过调用builder中的设置连接的读取超时时间的方法.readTimeout()设置连接的读超时时间。本发明实施例中readTimeout()的参数可以包括读超时时间和读超时时间对应的时间单位,如,readTimeout(NetConst.DEFAULT_READ_TIMEOUT,TimeUnit.SECONDS)。其中,读超时时间可以是通过常数(NetConst)中的默认读超时时间(DEFAULT_READ_TIMEOUT)设置读超时时间,如NetConst.DEFAULT_READ_TIMEOUT。其中,读超时时间对应的时间单位可以是通过时间单位(TimeUnit)中的秒(SECONDS)设置读超时时间对应的时间单位,如,TimeUnit.SECONDS。
示例性的,预先设置DEFAULT_READ_TIMEOUT=10。预先设置TimeUnit.SECONDS。通过readTimeout(NetConst.DEFAULT_READ_TIMEOUT,TimeUnit.SECONDS)设置读超时时间为10,以及设置读超时时间对应的时间单位为秒,即设置连接的读超时的时间为10秒。
具体的,通过调用builder中的设置连接的写入超时时间的方法.writeTimeout()设置连接的写超时时间。本发明实施例中writeTimeout()的参数可以包括写入超时时间和写入超时时间对应的时间单位。如,writeTimeout(NetConst.DEFAULT_WRITE_TIMEOUT,TimeUnit.SECONDS)。其中,写入超时时间可以是NetConst中的默认写入超时时间(DEFAULT_WRITE_TIMEOUT)设置写入超时时间,如,NetConst.DEFAULT_WRITE_TIMEOUT。其中,写入超时时间对应的时间单位可以通过TimeUnit的SECONDS设置写入超时时间对应的时间单位,如,TimeUnit.SECONDS。
示例性的,预先设置DEFAULT_WRITE_TIMEOUT=10。预先设置TimeUnit.SECONDS。通过writeTimeout(NetConst.DEFAULT_WRITE_TIMEOUT,TimeUnit.SECONDS)设置写入超时时间为10,以及设置写入超时时间对应的时间单位为秒,即设置连接的写入超时的时间为10秒。
具体的,通过调用builder中的设置连接的连接超时时间的方法.connectTimeout()设置连接超时时间。本发明实施例中connectTimeout()的参数可以包括连接超时时间以及连接超时时间对应的时间单位,如,connectTimeout(NetConst.DEFAULT_CONNECT_TIMEOUT,TimeUnit.SECOND S)。其中,连接超时时间可以通过NetConst中的默认连接超时时间(DEFAULT_CONNECT_TIMEOUT)设置连接超时时间,如,NetConst.DEFAULT_CONNECT_TIMEOUT。其中,连接超时时间对应的时间单位可以是通过TimeUnit中的SECONDS设置连接超时时间对应的时间单位,如,TimeUnit.SECONDS。
示例性的,预先设置DEFAULT_CONNECT_TIMEOUT=10。预先设置TimeUnit.SECONDS。通过调用以NetConst.DEFAULT_CONNECT_TIMEOUT和TimeUnit.SECONDS为参数的连接超时方法,即,通过调用connectTimeout(NetConst.DEFAULT_CONNECT_TIMEOUT,TimeUnit.SECONDS)设置连接超时时间为10,以及设置连接超时时间对应的时间单位为秒,即设置连接超时的时间为10秒。
可选的,通过所述初始化方法,对所述初始化为空的请求对象进行赋值。
其中,在初始化方法中,可以对初始化为空的请求对象进行赋值,为初始化为空的请求对象的赋值可以是基于Builder机制构建Request类型的对象并进行赋值。具体的,可以通过调用Request类中的Builder()方法,得到一个builder对象,如,Request.Builder()。可以通过调用builder对象中的设置路径的方法.url()设置Websocket的连接地址。在Websocket的连接地址设置完成时,通过调用build()方法构建一个Request类型的对象。在Request类型的对象构建完成时,将构建完成的Request类型的对象赋值给初始化为空的请求对象。
具体的,预先确定Websocket的连接地址变量对应的实际参数(如,ws://localhost:8080),以及预先确定预设接口类型的信息变量对应的实际参数。将预先确定Websocket的连接地址变量对应的实际参数,传递给预设Websocket管理类中的初始化方法的的入口参数对应的Websocket的连接地址变量的形式参数。将预先确定预设接口类型的信息变量对应的实际参数传递给预设Websocket管理类中的初始化方法的的入口参数对应的预设接口类型的信息变量的形式参数。调用初始化方法,通过初始化方法,对初始化为空的网络请求对象进行赋值。
S230、向服务器发送Websocket连接请求,通过预先定义的监听对象调用预设Websocket管理类中的监听状态连接方法,确定Websocket的连接状态。
S240、在检测到预先定义的监听对象调用的监听连接方法为监听连接失败的方法时,得到Websocket连接失败的信息。
其中,监听连接失败的方法可以是预设Websocket管理类中的监听状态连接方法所包括的方法,如,onFailure()。本发明实施例中,监听连接失败的方法可以是复写(override)的方法,如,override fun onFailure(),可以用于监听Websocket连接失败的回调信息。
其中,监听连接失败的方法的入口参数可以包括WebSocket类型的形式参数webSocket,Throwable类型的形式参数t,以及Response类型的形式参数response,如,override fun onFailure(webSocket:WebSocket,t:Throwable,response:Response?){}。其中,webSocket可以用于传递连接对象(webSocket)。t可以用于抛出异常。response可以用于接收服务器的反馈信息。
具体的,预先复写监听连接失败的方法。在检测到预先定义的监听对象调用的监听连接方法为监听连接失败的方法时,通过自动调用的预先复写监听连接失败的方法,也就是自动调用onFailure方法,得到Websocket连接失败的信息,也就是说,得到response接收到的信息。
S250、将Websocket连接失败的信息传递给初始化为空的协议对象,通过调用初始化为空的协议对象中的连接失败的回调信息方法,得到连接失败回调信息。
其中,得到Websocket连接失败回调信息的方式可以是通过初始化为空的协议对象调用连接失败的方法,如,receiveMessage?.onConnectFailed()。
具体的,在得到Websocket连接失败的信息时,将Websocket连接失败的信息传递给初始化为空的协议对象。当Websocket连接失败的信息传递给初始化为空的协议对象完成时,通过调用初始化为空的协议对象中的连接失败的回调信息方法,得到连接失败的回调信息。
S260、在检测到Websocket的连接状态处于未连接状态时,在预设Websocket管理类中的连接方法中,通过赋值完成的网络请求对象中的Websocket连接的方法,建立与服务器的Websocket连接。
其中,Websocket连接的方法可以理解为是将赋值完成的请求对象(request)和监听方法(createListener())进行二次封装的方法。Websocket连接的方法可以用于实现Websocket的连接流程。本发明实施例中,将赋值完成的请求对象(request)和监听方法(createListener())进行二次封装的好处在于,提高代码的可读性以及提升代码的复用性,同时,加强了代码的安全性。
其中,Websocket连接的方法的入口参数可以包括请求对象和监听方法,如,Websocket连接的方法的方法名称为newWebSocket,则Websocket连接的方法为newWebSocket(request,createListener())。其中,建立与服务器的Websocket连接的方式可以是通过调用赋值完成的网络请求对象中的Websocket连接的方法,如,okHttpClient?.newWebSocket(request,createListener())
具体的,预先基于请求对象和监听方法的返回值设置Websocket连接流程对应的连接逻辑,在检测到Websocket的连接状态处于未连接状态时,即,当Websocket的连接状态是连接断开、连接失败的状态。将赋值完成的请求对象作为实际参数传递与Websocket连接的方法中的请求对象对应的形式参数,也就是说,Websocket连接的方法参数中请求对象对应的入口参数接收赋值完成的请求对象作为实际参数。Websocket连接的方法参数中监听方法对应的入口参数接收监听方法执行完成的返回值。在检测到Websocket连接的方法中的入口参数接收实际参数完成时,在预设Websocket管理类中的连接方法内,可以通过调用赋值完成的网络请求对象中的Websocket连接的方法,根据预先基于请求对象和监听方法的返回值设置Websocket连接流程对应的连接逻辑,建立与服务器的Websocket连接。
需要说明的,当S230执行完成时,可以执行S240、S250,或可以执行S260,或可以S240、S250与S260同时执行。本发明实施例中的执行顺序不做限定。
在上述实施例的基础上,可选的,预设Websocket管理类中的监听状态连接方法包括监听连接成功的方法。在通过预先定义的监听对象调用预设Websocket管理类中的监听状态连接方法,确定Websocket的连接状态之后,方法还包括:在检测到预先定义的监听对象调用的监听连接方法为监听连接成功的方法时,得到Websocket连接成功的信息;将Websocket连接成功的信息传递给初始化为空的协议对象,通过调用初始化为空的协议对象中的连接成功的回调信息方法,得到连接成功回调信息。
其中,监听连接成功的方法可以是预先在Websocket管理类中的监听状态连接方法所包括的方法,如onOpen()。在本实施例中,监听连接成功的方法可以是复写的方法,如,override fun onOpen(),可以用于监听Websocket连接成功的回调信息。
其中,监听连接成功的方法的入口参数可以包括WebSocket类型的形式参数webSocket和Response类型的形式参数response,如,override fun onOpen(webSocket:WebSocket,response:Response){}。其中,webSocket可以用于传递连接对象(webSocket)。response可以用于接收服务器的反馈信息。
其中,在检测到预先定义的监听对象调用的监听连接方法为监听连接成功的方法时可以理解为,监听连接成功的方法被调用。可选的,在调用监听连接成功的方法之前,可以通过调用isConnectServer(),Websocket的连接状态。
其中,连接成功的回调信息方法可以是onConnectSuccess(),通过调用初始化为空的协议对象中的连接成功的回调信息方法,得到连接成功的回调信息的方式可以是receiveMessage?.onConnectSuccess()。
具体的,预先复写监听连接成功的方法。在检测到预先定义的监听对象调用的监听连接方法为监听连接成功的方法时,也就是说,在检测到预先复写监听连接成功的方法被调用时,则得到Websocket连接成功的信息,也就是说,得到response反馈的连接成功信息。将连接成功的信息传递给初始化为空的协议对象。在连接成功的信息传递给初始化为空的协议对象完成时,通过调用初始化为空的协议对象中的连接成功的回调信息方法,得到连接成功回调信息。
在上述实施例的基础上,可选的,预设Websocket管理类中的监听状态连接方法包括监听信息的方法。在通过预先定义的监听对象调用预设Websocket管理类中的监听信息的方法,确定Websocket的连接状态之后,方法还包括:在检测到预先定义的监听对象调用的监听连接方法为监听信息的方法时,得到Websocket传输信息;将Websocket传输信息传递给初始化为空的协议对象,通过调用初始化为空的协议对象中的收到息的方法,得到Websocket传输信息,并将Websocket传输信息进行传输至客户端,和/或服务器。
其中,监听信息的方法可以是预设Websocket管理类中的监听状态连接方法所包括的方法,如,onMessage()。本发明实施例中,监听信息的方法可以是复写(override)的方法,如,override fun onMessage(),可以用于监听Websocket传输信息。
其中,监听信息的方法的入口参数可以包括WebSocket类型的形式参数webSocket和字符串(String)类型的形式参数(如,text)。如,监听信息的的方法为override funonMessage(webSocket:WebSocket,text:String){}。其中,webSocket可以用于传递连接对象(webSocket)。Text可以用于接收Websocket传输信息。
其中,收到消息的方法的参数可以是接收到的消息内容,且参数的类型可以是字符串类型,如,fun onMessage(text:String?)。可以通过调用初始化为空的协议对象中的收到消息的方法,即,通过receiveMessage?.onMessage(text),得到收到消息。
具体的,预先复写监听信息的方法。在检测到预先定义的监听对象调用的监听连接方法为监听信息的方法时,也就是说,在检测到预先复写监听信息的方法被调用时,则得到Websocket传输信息,也就是说,得到客户端与服务器之间发送的信息。将客户端与服务器之间发送的信息传递给初始化为空的协议对象。在客户端与服务器之间发送的信息传递给初始化为空的协议对象完成时,通过调用初始化为空的协议对象中的收到消息的方法,将消息传递反馈给客户端,和/或服务器。
在上述实施例的基础上,可选的预设Websocket管理类中的监听状态连接方法包括监听连接关闭的方法。在通过预先定义的监听对象调用预设Websocket管理类中的监听状态连接方法,确定Websocket的连接状态之后,方法还包括:在检测到预先定义的监听对象调用的监听连接方法为监听连接关闭的方法时,将Websocket的连接状态更新为未连接状态。
其中,监听连接关闭的方法可以是预先在Websocket管理类中的监听状态连接方法所包括的方法,如onClosed()。在本实施例中,监听连接关闭的方法可以是复写的方法,如,override fun onClosed(),可以用于监听Websocket连接关闭的回调信息。
其中,监听连接关闭的方法的入口参数可以包括WebSocket类型的形式参数webSocket、整型(Int)的形式参数(如,code),String类型的形式参数(如,reason),如,override fun onClosed(webSocket:WebSocket,code:Int,reason:String){}。其中,webSocket可以用于传递连接对象(webSocket)。code可以是关闭状态号,关闭状态号的默认值为1000。reason可以用于表示断开原因,如,客户端主动断开连接。
具体的,预先复写监听连接关闭的方法。在检测到预先定义的监听对象调用的监听连接方法为监听连接关闭的方法时,也就是说,在检测到预先复写监听连接关闭的方法被调用时,则得到Websocket连接关闭的信息,也就是说,得到关闭状态号断开原因对应的信息。当关闭状态号为关闭状态对应的默认值,且关闭原因为客户端主动断开连接,则将Websocket的连接状态更新为未连接状态。
此外,本发明实施例与上述实施例提出的一种Websocket的管理方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,且本实施例与上述实施例具有相同的有益效果。
本实施例的技术方案,通过在向服务器发送Websocket连接请求之前,可以在Websocket管理类中,基于初始化定义语句,将网络请求对象和协议对象,初始化为空。通过将网络请求对象和协议对象初始化为空,便于在信息传递时,提高初始化为空的网络请求对象和协议对象的复用性。在将网络请求对象和协议对象,初始化为空之后,可以将Websocket的连接地址变量和预设接口类型的信息变量,作为预设Websocket管理类中的初始化方法的入口参数,调用初始化方法,通过初始化方法,对初始化为空的网络请求对象进行赋值。通过对网络请求对象进行赋值,设置连接的读超时时间,写入超时时间,以及连接超时时间。
在此基础上,通过在检测到预先定义的监听对象调用的监听连接方法为监听连接失败的方法时,得到Websocket连接失败的信息,将Websocket连接失败的信息传递给初始化为空的协议对象,通过调用初始化为空的协议对象中的连接失败的回调信息方法,得到连接失败回调信息。通过得到连接失败的回调信息,便于开发人员及时了解websocket的连接状态。实现了在发生异常的情况时,WebSocket能够动态连接,从而达到了降低程序开发成本高,提升了程序的可维护性、健壮性以及适应性的效果。
实施例三
图3是本发明实施例三提供的一种Websocket的管理装置模块示意图,本发明提供了一种Websocket的管理装置,该装置包括:连接状态确定模块310和Websocket连接建立模块320。
其中,连接状态确定模块310,用于向服务器发送Websocket连接请求,通过预先定义的监听对象调用预设Websocket管理类中的监听状态连接方法,确定所述Websocket的连接状态;Websocket连接建立模块320,用于在检测到所述Websocket的连接状态处于未连接状态时,调用所述预设Websocket管理类中的连接方法,建立与服务器的Websocket连接。
本实施例的技术方案,通过连接状态确定模块向服务器发送Websocket连接请求,通过预先定义的监听对象调用预设Websocket管理类中的监听状态连接方法,确定Websocket的连接状态。通过监听对象调用监听状态连接方法可以实时确定Websocket的连接状态,以便于实时监听Websocket的连接状态。通过Websocket连接建立模块在检测到Websocket的连接状态处于未连接状态时,调用预设Websocket管理类中的连接方法,建立与服务器的Websocket连接。解决了现有技术中WebSocket的管理方法很容易在发生异常的情况时就出现自动断开,无法动态连接,导致程序健壮性差、适应性低的技术问题,实现了在发生异常的情况时,WebSocket能够动态连接,从而达到了降低程序开发成本高,提升了程序的可维护性、健壮性以及适应性的效果。
可选的,连接状态确定模块310,用于通过所述监听状态连接方法中的连接判断方法,对所述Websocket的连接状态进行判断,得到所述Websocket的连接状态的判断结果;根据所述判断结果,确定所述Websocket的连接状态。
可选的,所述监听对象的类型是WebSocketListener类型。
可选的,该装置还包括:对象初始化模块330,用于在所述Websocket管理类中,基于初始化定义语句,将网络请求对象和协议对象,初始化为空。
可选的,该装置还包括:对象赋值模块340,用于将Websocket的连接地址变量和预设接口类型的信息变量,作为所述预设Websocket管理类中的初始化方法的入口参数,调用所述初始化方法;通过所述初始化方法,对所述初始化为空的网络请求对象进行赋值。
可选的,所述预设Websocket管理类中的监听状态连接方法包括监听连接成功的方法;该装置还包括:成功回调信息得到模块,用于在检测到所述预先定义的监听对象调用的监听连接方法为所述监听连接成功的方法时,得到Websocket连接成功的信息;将所述Websocket连接成功的信息传递给初始化为空的协议对象,通过调用初始化为空的协议对象中的连接成功的回调信息方法,得到连接成功回调信息。
可选的,所述预设Websocket管理类中的监听状态连接方法包括监听连接失败的方法;该装置还包括:连接失败回调信息得到模块,用于在检测到预先定义的监听对象调用的监听连接方法为所述监听连接失败的方法时,得到Websocket连接失败的信息;将所述Websocket连接失败的信息传递给初始化为空的协议对象,通过调用初始化为空的协议对象中的连接失败的回调信息方法,得到连接失败回调信息;相应的,Websocket连接建立模块320,用于在检测到所述Websocket的连接状态处于未连接状态时,在所述预设Websocket管理类中的连接方法中,通过赋值完成的网络请求对象中的Websocket连接的方法,建立与所述服务器的Websocket连接。
上述装置可执行本发明任意实施例所提供的Websocket的管理方法,具备执行Websocket的管理方法相应的功能模块和有益效果。
值得注意的是,上述装置所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明实施例的保护范围。
实施例四
图4是本发明实施例四提供的一种电子设备的结构示意图。图4示出了适于用来实现本发明任一实施方式的示例性电子设备12的框图。图4显示的电子设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。设备12典型的是承担配置信息的处理的电子设备。
如图4所示,电子设备12以通用计算设备的形式表现。电子设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,存储器28,连接不同组件(包括存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture,ISA)总线,微通道体系结构(Micro Channel Architecture,MCA)总线,增强型ISA总线、视频电子标准协会(Video Electronics Standards Association,VESA)局域总线以及外围组件互连(Peripheral Component Interconnect,PCI)总线。
电子设备12典型地包括多种计算机可读介质。这些介质可以是任何能够被电子设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器28可以包括易失性存储器形式的计算机装置可读介质,例如随机存取存储器(Random Access Memory,RAM)30和/或高速缓存存储器32。电子设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如只读光盘(Compact Disc-Read Only Memory,CD-ROM)、数字视盘(Digital Video Disc-Read Only Memory,DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品40,该程序产品40具有一组程序模块42,这些程序模块被配置以执行本发明各实施例的功能。程序产品40,可以存储在例如存储器28中,这样的程序模块42包括但不限于一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
电子设备12也可以与一个或多个外部设备14(例如键盘、鼠标、摄像头等和显示器)通信,还可与一个或者多个使得用户能与该电子设备12交互的设备通信,和/或与使得该电子设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,电子设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(Local Area Network,LAN),广域网WideArea Network,WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与电子设备12的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、磁盘阵列(Redundant Arrays of Independent Disks,RAID)装置、磁带驱动器以及数据备份存储装置等。
处理器16通过运行存储在存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明上述实施例所提供的Websocket的管理方法,该方法包括:
向服务器发送Websocket连接请求,通过预先定义的监听对象调用预设Websocket管理类中的监听状态连接方法,确定所述Websocket的连接状态;
在检测到所述Websocket的连接状态处于未连接状态时,调用所述预设Websocket管理类中的连接方法,建立与服务器的Websocket连接。
当然,本领域技术人员可以理解,处理器还可以实现本发明任一实施例所提供的Websocket的管理方法的技术方案。
实施例五
本发明实施例五还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行Websocket的管理方法。
该方法包括:
向服务器发送Websocket连接请求,通过预先定义的监听对象调用预设Websocket管理类中的监听状态连接方法,确定所述Websocket的连接状态;
在检测到所述Websocket的连接状态处于未连接状态时,调用所述预设Websocket管理类中的连接方法,建立与服务器的Websocket连接。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明实施例操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言——诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (8)

1.一种Websocket的管理方法,其特征在于,包括:
向服务器发送Websocket连接请求,通过预先定义的监听对象调用预设Websocket管理类中的监听状态连接方法,确定所述Websocket的连接状态;
在检测到所述Websocket的连接状态处于未连接状态时,调用所述预设Websocket管理类中的连接方法,建立与服务器的Websocket连接,其中,所述连接方法为预先在Websocket管理类中设定的私有方法;
在所述向服务器发送Websocket连接请求之前,包括:
在所述Websocket管理类中,基于初始化定义语句,将网络请求对象和协议对象,初始化为空;
将Websocket的连接地址变量和预设接口类型的信息变量,作为所述预设Websocket管理类中的初始化方法的入口参数,调用所述初始化方法;
通过所述初始化方法,对所述初始化为空的网络请求对象进行赋值。
2.根据权利要求1所述的方法,其特征在于,所述通过预先定义的监听对象调用预设Websocket管理类中的监听状态连接方法,确定所述Websocket的连接状态,包括:
通过所述监听状态连接方法中的连接判断方法,对所述Websocket的连接状态进行判断,得到所述Websocket的连接状态的判断结果;
根据所述判断结果,确定所述Websocket的连接状态。
3.根据权利要求1所述的方法,其特征在于,所述监听对象的类型是WebSocketListener类型。
4.根据权利要求1所述的方法,其特征在于,所述预设Websocket管理类中的监听状态连接方法包括监听连接成功的方法;
在所述通过预先定义的监听对象调用预设Websocket管理类中的监听状态连接方法,确定所述Websocket的连接状态之后,所述方法还包括:
在检测到所述预先定义的监听对象调用的监听连接方法为所述监听连接成功的方法时,得到Websocket连接成功的信息;
将所述Websocket连接成功的信息传递给初始化为空的协议对象,通过调用初始化为空的协议对象中的连接成功的回调信息方法,得到连接成功回调信息。
5.根据权利要求1所述的方法,其特征在于,所述预设Websocket管理类中的监听状态连接方法包括监听连接失败的方法;
在所述通过预先定义的监听对象调用预设Websocket管理类中的监听状态连接方法,确定所述Websocket的连接状态之后,所述方法还包括:
在检测到预先定义的监听对象调用的监听连接方法为所述监听连接失败的方法时,得到Websocket连接失败的信息;
将所述Websocket连接失败的信息传递给初始化为空的协议对象,通过调用初始化为空的协议对象中的连接失败的回调信息方法,得到连接失败回调信息。
6.根据权利要求1所述的方法,其特征在于,所述调用所述预设Websocket管理类中的连接方法,建立与服务器的Websocket连接,包括:
在所述预设Websocket管理类中的连接方法中,通过赋值完成的网络请求对象中的Websocket连接的方法,建立与所述服务器的Websocket连接。
7.一种Websocket的管理装置,其特征在于,包括:
连接状态确定模块,用于向服务器发送Websocket连接请求,通过预先定义的监听对象调用预设Websocket管理类中的监听状态连接方法,确定所述Websocket的连接状态;
Websocket连接建立模块,用于在检测到所述Websocket的连接状态处于未连接状态时,调用所述预设Websocket管理类中的连接方法,建立与服务器的Websocket连接,其中,所述连接方法为预先在Websocket管理类中设定的私有方法;
对象初始化模块,用于在所述Websocket管理类中,基于初始化定义语句,将网络请求对象和协议对象,初始化为空;
对象赋值模块,用于将Websocket的连接地址变量和预设接口类型的信息变量,作为所述预设Websocket管理类中的初始化方法的入口参数,调用所述初始化方法;通过所述初始化方法,对所述初始化为空的网络请求对象进行赋值。
8.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述程序被所述处理器执行,使得所述处理器实现如权利要求1-6中任一所述的Websocket的管理方法。
CN202110181160.0A 2021-02-09 2021-02-09 WebSocket的管理方法、装置、电子设备及存储介质 Active CN114915651B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110181160.0A CN114915651B (zh) 2021-02-09 2021-02-09 WebSocket的管理方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110181160.0A CN114915651B (zh) 2021-02-09 2021-02-09 WebSocket的管理方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN114915651A CN114915651A (zh) 2022-08-16
CN114915651B true CN114915651B (zh) 2023-09-26

Family

ID=82761460

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110181160.0A Active CN114915651B (zh) 2021-02-09 2021-02-09 WebSocket的管理方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN114915651B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998004971A1 (en) * 1996-07-25 1998-02-05 Tradewave Corporation Method and system for generalized protocol implementation on client/server communications connections
FR2964524A1 (fr) * 2010-09-07 2012-03-09 France Telecom Traitement de donnees pour la notification d'un equipement
EP2720148A1 (en) * 2012-10-11 2014-04-16 Agfa Healthcare Method and computer program product for event notification in a workflow management platform
CN104463670A (zh) * 2014-11-05 2015-03-25 浪潮软件集团有限公司 一种基于Websocket的银行前置交易系统的搭建方法
US9037735B1 (en) * 2013-03-15 2015-05-19 Kaazing Corporation Establishing websocket protocol extensions
CN107517248A (zh) * 2017-08-09 2017-12-26 苏州驰声信息科技有限公司 基于sdk的网络连接方法及装置
CN109040295A (zh) * 2018-08-30 2018-12-18 上海九山电子科技有限公司 异常断线的确定方法及装置、终端及存储介质
CN109743381A (zh) * 2018-12-27 2019-05-10 北京字节跳动网络技术有限公司 客户端与服务端长连接交互方法及装置
CN110661848A (zh) * 2019-08-28 2020-01-07 视联动力信息技术股份有限公司 一种基于视联网的消息推送方法、装置、设备和介质
CN111431964A (zh) * 2020-02-20 2020-07-17 视联动力信息技术股份有限公司 一种消息同步处理方法、装置及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9143550B2 (en) * 2012-12-01 2015-09-22 Qualcomm Innovation Center, Inc. Graceful degradation of websocket connections to nonpersistent HTTP-based communications
US20150052256A1 (en) * 2013-08-15 2015-02-19 Unisys Corporation Transmission of network management data over an extensible scripting file format

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998004971A1 (en) * 1996-07-25 1998-02-05 Tradewave Corporation Method and system for generalized protocol implementation on client/server communications connections
FR2964524A1 (fr) * 2010-09-07 2012-03-09 France Telecom Traitement de donnees pour la notification d'un equipement
EP2720148A1 (en) * 2012-10-11 2014-04-16 Agfa Healthcare Method and computer program product for event notification in a workflow management platform
US9037735B1 (en) * 2013-03-15 2015-05-19 Kaazing Corporation Establishing websocket protocol extensions
CN104463670A (zh) * 2014-11-05 2015-03-25 浪潮软件集团有限公司 一种基于Websocket的银行前置交易系统的搭建方法
CN107517248A (zh) * 2017-08-09 2017-12-26 苏州驰声信息科技有限公司 基于sdk的网络连接方法及装置
CN109040295A (zh) * 2018-08-30 2018-12-18 上海九山电子科技有限公司 异常断线的确定方法及装置、终端及存储介质
CN109743381A (zh) * 2018-12-27 2019-05-10 北京字节跳动网络技术有限公司 客户端与服务端长连接交互方法及装置
CN110661848A (zh) * 2019-08-28 2020-01-07 视联动力信息技术股份有限公司 一种基于视联网的消息推送方法、装置、设备和介质
CN111431964A (zh) * 2020-02-20 2020-07-17 视联动力信息技术股份有限公司 一种消息同步处理方法、装置及存储介质

Also Published As

Publication number Publication date
CN114915651A (zh) 2022-08-16

Similar Documents

Publication Publication Date Title
JP6092249B2 (ja) 埋込まれたプロセス通信のための仮想チャネル
US11334660B2 (en) Authenticated discoverability of Universal Windows Applications to Win32 desktop applications
US11509505B2 (en) Method and apparatus for operating smart network interface card
WO2022127118A1 (zh) 文件传输方法、装置、电子设备及存储介质
US10693816B2 (en) Communication methods and systems, electronic devices, and computer clusters
US20160352665A1 (en) Tracking object across processes
US11689626B2 (en) Transport channel via web socket for ODATA
CN112346794A (zh) 接口调用方法、装置、设备及介质
US7996524B2 (en) Controlling external communication of embedded device using proxy server
WO2017166166A1 (en) System and method for providing runtime tracing for web-based client accessing transactional middleware platform using extension interface
CN114915651B (zh) WebSocket的管理方法、装置、电子设备及存储介质
CN111373377B (zh) 用于请求者和提供者之间的错误处理的方法和系统
CN117194068A (zh) 一种跨进程数据传输方法、系统、设备及存储介质
CN115665265B (zh) 请求处理方法、装置、设备、存储介质及系统
CN109068170B (zh) 一种弹幕消息的存储方法、装置、终端和存储介质
CN112261072B (zh) 一种服务调用方法、装置、设备和存储介质
CN116016473A (zh) 实例信息获取方法和系统
CN114116263A (zh) 用于浏览器中多页签通信的系统、方法、设备及介质
US20030046406A1 (en) HTTP connector
CN113347250B (zh) 数据访问方法、数据访问装置、电子设备及可读存储介质
CN117707651B (zh) 基于嵌入式Linux系统的接口资源操作方法及系统
CN113377621B (zh) 一种数据监听方法、装置、存储介质及电子设备
CN110011767B (zh) 用于tcp连接备份的方法和装置
CN114827741A (zh) 直播流管理方法、装置、电子设备及存储介质
EP4145318A1 (en) System and method for monitoring delivery of messages passed between processes from different operating systems

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