客户端之间的通讯方法、装置、电子设备及存储介质与流程

文档序号:18823311发布日期:2019-10-09 01:08阅读:106来源:国知局
客户端之间的通讯方法、装置、电子设备及存储介质与流程

本发明涉及网络视频直播技术领域,尤其涉及一种客户端之间的通讯方法、装置、电子设备及存储介质。



背景技术:

在网络视频直播系统中,客户端直播应用程序和客户端浏览器与服务器建立网络连接,用户可通过客户端直播应用程序或客户端浏览器观看直播内容。客户端直播应用程序和客户端浏览器之间可以通过服务器实现相互通信。

在实现本发明的过程中,发明人发现,当客户端直播应用程序和客户端浏览器与服务器建立网络连接时,服务器需要为每个连接创建一个单独的线程来管理连接并进行数据的读、发送等操作。这样,当连接数目较多时,服务器也需创建相应数目的线程来实现连接的管理和数据的处理,这无疑会降低服务器的接入能力,并降低数据传输的效率。



技术实现要素:

有鉴于此,本发明实施例提供一种客户端之间的通讯方法、装置、电子设备及存储介质,能够提高视频直播系统中服务器的接入能力,并提高数据传输的效率。

第一方面,本发明实施例提供一种客户端之间的通讯方法,应用于视频直播系统中的服务器,所述方法包括:

第一线程接收第一网络连接,将接收的第一网络连接分配给第二线程;所述第一线程为单一线程,所述第一网络连接为客户端直播应用程序发起的网络连接;

所述第二线程根据所述第一网络连接,读取所述客户端直播应用程序发送的二进制串;

所述第一线程接收第二网络连接,将接收的第二网络连接分配给第二线程或第三线程;所述第二网络连接为客户端浏览器发起的网络连接;

所述第二线程或第三线程将所述二进制串发送给所述客户端浏览器,以使所述客户端浏览器对所述二进制串进行解析操作。

结合第一方面,在第一方面的第一种实施方式中,所述第二线程或第三线程将所述二进制串发送给所述客户端浏览器,以使所述客户端浏览器对所述二进制串进行解析操作,包括:

若所述客户端浏览器支持网络套接字通信机制,则与所述客户端浏览器建立网络套接字连接,所述第二线程或第三线程根据所述网络套接字连接,将所述二进制串透传给所述客户端浏览器,以使所述客户端浏览器对所述二进制串进行解析操作;其中,所述客户端浏览器和所述客户端直播应用程序两端均兼容二进制协议。

结合第一方面的第一种实施方式,在第一方面的第二种实施方式中,所述第二线程或第三线程将所述二进制串发送给所述客户端浏览器,以使所述客户端浏览器对所述二进制串进行解析操作,还包括:

若所述客户端浏览器不支持网络套接字通信机制,则接收所述客户端浏览器主动发起的二进制串获取请求,所述第二线程或第三线程根据所述二进制串获取请求,将所述二进制串透传给所述客户端浏览器,以使所述客户端浏览器对所述二进制串进行解析操作。

结合第一方面的第一种实施方式,在第一方面的第三种实施方式中,所述若所述客户端浏览器支持网络套接字通信机制,则与所述客户端浏览器建立网络套接字连接,所述第二线程或第三线程根据所述网络套接字连接,将所述二进制串透传给所述客户端浏览器,包括:

若所述客户端浏览器支持网络套接字通信机制,则通过所述客户端浏览器的脚本调用通信接口封装包中封装的网络套接字接口建立网络套接字连接,所述第二线程或第三线程根据所述网络套接字连接,将所述二进制串透传给所述客户端浏览器;其中,所述通信接口封装包安装在所述客户端浏览器中,所述通信接口封装包中至少封装有网络套接字接口。

结合第一方面的第三种实施方式,在第一方面的第四种实施方式中,所述通过所述客户端浏览器的脚本调用通信接口封装包中封装的网络套接字接口建立网络套接字连接,包括:

通过所述客户端浏览器的javascript调用socket.io中封装的网络套接字接口建立网络套接字连接。

结合第一方面的第二种实施方式,在第一方面的第五种实施方式中,所述若所述客户端浏览器不支持网络套接字通信机制,则接收所述客户端浏览器主动发起的二进制串获取请求,所述第二线程或第三线程根据所述二进制串获取请求,将所述二进制串透传给所述客户端浏览器,包括:

若所述客户端浏览器不支持网络套接字通信机制,则通过所述客户端浏览器的脚本自动调用通信接口封装包中封装的所述客户端浏览器所支持的通信接口建立网络连接;其中,所述通信接口封装包安装在所述客户端浏览器中;

接收所述客户端浏览器主动发起的二进制串获取请求;

所述第二线程或第三线程根据所述二进制串获取请求,将所述二进制串透传给所述客户端浏览器。

结合第一方面的第五种实施方式,在第一方面的第六种实施方式中,所述通过所述客户端浏览器的脚本自动调用通信接口封装包中封装的所述客户端浏览器所支持的通信接口建立网络连接,包括:

通过所述客户端浏览器的javascript调用socket.io中封装的长轮询接口建立网络连接。

结合第一方面,在第一方面的第七种实施方式中,所述第一线程接收第一网络连接,将接收的第一网络连接分配给第二线程,包括:

在javanio非阻塞模式下,所述第一线程接收第一网络连接,将接收的第一网络连接分配给第二线程。

第二方面,本发明实施例提供一种客户端之间的通讯装置,应用于视频直播系统中的服务器,所述装置包括:

连接管理模块,用于通过第一线程接收第一网络连接,将接收的第一网络连接分配给第二线程;通过所述第一线程接收第二网络连接,将接收的第二网络连接分配给第二线程或第三线程;其中,所述第一线程为单一线程,所述第一网络连接为客户端直播应用程序发起的网络连接;所述第二网络连接为客户端浏览器发起的网络连接;

数据处理模块,用于通过所述第二线程根据所述第一网络连接,读取所述客户端直播应用程序发送的二进制串;通过所述第二线程或第三线程将所述二进制串发送给所述客户端浏览器,以使所述客户端浏览器对所述二进制串进行解析操作。

结合第二方面,在第二方面的第一种实施方式中,所述数据处理模块,具体用于:若所述客户端浏览器支持网络套接字通信机制,则与所述客户端浏览器建立网络套接字连接,通过所述第二线程或第三线程根据所述网络套接字连接,将所述二进制串透传给所述客户端浏览器,以使所述客户端浏览器对所述二进制串进行解析操作;其中,所述客户端浏览器和所述客户端直播应用程序两端均兼容二进制协议。

结合第二方面的第一种实施方式,在第二方面的第二种实施方式中,所述数据处理模块,还具体用于:若所述客户端浏览器不支持网络套接字通信机制,则接收所述客户端浏览器主动发起的二进制串获取请求,通过所述第二线程或第三线程根据所述二进制串获取请求,将所述二进制串透传给所述客户端浏览器,以使所述客户端浏览器对所述二进制串进行解析操作。

结合第二方面的第一种实施方式,在第二方面的第三种实施方式中,所述数据处理模块,具体用于:若所述客户端浏览器支持网络套接字通信机制,则通过所述客户端浏览器的脚本调用通信接口封装包中封装的网络套接字接口建立网络套接字连接,所述第二线程或第三线程根据所述网络套接字连接,将所述二进制串透传给所述客户端浏览器;其中,所述通信接口封装包安装在所述客户端浏览器中,所述通信接口封装包中至少封装有网络套接字接口。

结合第二方面的第三种实施方式,在第二方面的第四种实施方式中,所述数据处理模块,具体用于:若所述客户端浏览器支持网络套接字通信机制,则通过所述客户端浏览器的javascript调用socket.io中封装的网络套接字接口建立网络套接字连接,所述第二线程或第三线程根据所述网络套接字连接,将所述二进制串透传给所述客户端浏览器。

结合第二方面的第二种实施方式,在第二方面的第五种实施方式中,所述数据处理模块,具体用于:若所述客户端浏览器不支持网络套接字通信机制,则通过所述客户端浏览器的脚本自动调用通信接口封装包中封装的所述客户端浏览器所支持的通信接口建立网络连接,其中,所述通信接口封装包安装在所述客户端浏览器中;接收所述客户端浏览器主动发起的二进制串获取请求;所述第二线程或第三线程根据所述二进制串获取请求,将所述二进制串透传给所述客户端浏览器。

结合第二方面的第五种实施方式,在第二方面的第六种实施方式中,所述数据处理模块,具体用于:若所述客户端浏览器不支持网络套接字通信机制,则通过所述客户端浏览器的javascript调用socket.io中封装的长轮询接口建立网络连接;接收所述客户端浏览器主动发起的二进制串获取请求;所述第二线程或第三线程根据所述二进制串获取请求,将所述二进制串透传给所述客户端浏览器。

结合第二方面的第五种实施方式,在第二方面的第七种实施方式中,所述连接管理模块,具体用于:在javanio非阻塞模式下,通过第一线程接收第一网络连接,将接收的第一网络连接分配给第二线程;通过所述第一线程接收第二网络连接,将接收的第二网络连接分配给第二线程或第三线程;其中,所述第一线程为单一线程,所述第一网络连接为客户端直播应用程序发起的网络连接;所述第二网络连接为客户端浏览器发起的网络连接。

第三方面,本发明实施例提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一所述的通讯方法。

第四方面,本发明的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述任一权利要求所述的通讯方法。

本发明实施例提供的一种客户端之间的通讯方法、装置、电子设备及存储介质,通过第一线程接收第一网络连接和第二网络连接,将接收的第一网络连接分配给第二线程,所述第二线程根据所述第一网络连接,读取客户端直播应用程序发送的二进制串;第一线程将接收的第二网络连接分配给第二线程或第三线程,由所述第二线程或第三线程将所述第二线程读取客户端直播应用程序发送的二进制串发送给所述客户端浏览器,以使所述客户端浏览器对所述二进制串进行解析操作,这样,可通过一个单一线程(第一线程)来管理多个网络连接(第一网络连接和第二网络连接),具体的读、发送等操作由其他处理线程(第二线程或第三线程)来负责处理,将网络连接的管理与连接后的数据操作分开布置并分别由不同的线程来处理,由此能够提高视频直播系统中服务器的接入能力;进一步地,客户端直播应用程序发送的数据为二进制串,客户端浏览器接收到的数据也为二进制串,这样客户端直播应用程序发送的二进制串经服务器可直接传递给客户端浏览器,期间无需进行拆包或协议转换等操作,有利于提高数据传输效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为本发明实施例一客户端之间的通讯方法流程示意图;

图2为本发明实施例一中通过一个单一线程管理多个连接的结构示意图;

图3为本发明实施例一中第二线程或第三线程将二进制串发送给客户端浏览器的流程示意图;

图4为本发明实施例二客户端之间的通讯装置结构示意图;

图5为本发明电子设备一个实施例的结构示意图。

具体实施方式

下面结合附图对本发明实施例进行详细描述。

应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本实施例提供一种客户端之间的通讯方法、装置、电子设备及存储介质,应用于网络视频直播系统中的服务器。客户端直播应用程序可以安装在手机等移动终端上。客户端浏览器既可安装在桌面计算机上,也可安装在手机等移动终端上。用户可通过移动终端上的客户端直播应用程序观看直播内容,也可通过客户端浏览器观看直播内容。客户端直播应用程序和客户端浏览器之间可以通过服务器实现相互通信。

图1为本发明实施例一客户端之间的通讯方法流程示意图,参看图1,本实施例的方法应用于网络视频直播系统中的服务器,所述方法可包括:

步骤101、第一线程接收第一网络连接,将接收的第一网络连接分配给第二线程。

所述第一线程为单一线程,用来管理多个网络连接。所述第二线程为具体处理读、发送等操作的业务处理线程。第一线程与第二线程之间可采用wait(等待)、notify(通知)等方式通讯。所述第一网络连接为客户端直播应用程序发起的网络连接。第一线程可将接收的第一网络连接分配至第二线程的队列中,便于第二线程从其队列中获取所述第一网络连接。

图2为本发明实施例一中通过一个单一线程管理多个连接的结构示意图。参看图2所示,客户端直播应用程序与客户端浏览器均可通过第一线程接入直播系统的服务器,具体的读、发送等操作由其他的业务处理线程如第二线程、第三线程等线程来完成。由于视频直播应用同时在线人数可能较多,本实施例中,采用javanio非阻塞模式来实现客户端直播应用程序与客户端浏览器高效接入直播系统的服务器。javanio是javanewio的简称,是在jdk1.4里提供的新的api(applicationprogramminginterface,应用程序编程接口)。javanio的非阻塞模式,可通过使用一个单一线程管理多个网络连接,具体的读、发送等操作由其他的业务处理线程来完成,因此,采用javanio非阻塞模式来实现客户端直播应用程序与客户端浏览器高效接入直播系统的服务器,可提高服务器的接入能力,能够使服务器有效承载大量连接的建立和数据传输工作。所述多个网络连接包括客户端直播应用程序的网络连接和客户端浏览器的网络连接,其中,客户端直播应用程序的网络连接可为多个,客户端浏览器的网络连接也可为多个。

步骤102、所述第二线程根据所述第一网络连接,读取所述客户端直播应用程序发送的二进制串。

第一线程接收第一网络连接,即可在客户端直播应用程序与服务端之间建立第一网络连接。为了实现客户端直播应用程序与客户端浏览器之间高效的数据传输,客户端直播应用程序与客户端浏览器两端均兼容二进制协议。在客户端直播应用程序与服务端建立第一网络连接后,客户端直播应用程序可将要传输的数据对象序列化为二进制串并发送,所述第二线程根据所述第一网络连接,读取所述客户端直播应用程序发送的二进制串。

步骤103、所述第一线程接收第二网络连接,将接收的第二网络连接分配给所述第二线程或第三线程。

所述第二网络连接为客户端浏览器发起的网络连接。所述客户端浏览器可以是ie浏览器,googlechrome或火狐浏览器等。

所述第一线程接收第二网络连接,即可在客户端浏览器与服务端之间建立第二网络连接。

所述第一线程将接收的第二网络连接可直接分配给所述第二线程,通过所述第二线程将所述二进制串发送给所述客户端浏览器。本发明实施例不限于此,在另一实施例中,所述第一线程也可将接收的第二网络连接分配给所述第二线程之外的其它业务处理线程,比如分配给第三线程,具体地,第一线程可先将读取的二进制串保存在缓存区中,在第一线程接收到第二网络连接后,将第二网络连接分配给第三线程,第三线程从所述缓存区中读取所述二进制串,将所述二进制串发送给所述客户端浏览器。

步骤104、所述第二线程或第三线程将所述二进制串发送给所述客户端浏览器,以使所述客户端浏览器对所述二进制串进行解析操作。

本发明实施例提供的一种客户端之间的通讯方法,通过第一线程接收第一网络连接和第二网络连接,将接收的第一网络连接分配给第二线程,所述第二线程根据所述第一网络连接,读取客户端直播应用程序发送的二进制串;第一线程将接收的第二网络连接分配给第二线程或第三线程,由所述第二线程或第三线程将所述第二线程读取客户端直播应用程序发送的二进制串发送给所述客户端浏览器,以使所述客户端浏览器对所述二进制串进行解析操作,这样,可通过一个单一线程(第一线程)来管理多个网络连接(第一网络连接和第二网络连接),具体的读、发送等操作由其他处理线程(第二线程或第三线程)来负责处理,将网络连接的管理与连接后的数据操作分开布置并分别由不同的线程来处理,由此能够提高视频直播系统中服务器的接入能力;进一步地,客户端直播应用程序发送的数据为二进制串,客户端浏览器接收到的数据也为二进制串,这样客户端直播应用程序发送的二进制串经服务器可直接传递给客户端浏览器,期间无需进行拆包或协议转换等操作,有利于提高数据传输效率。

图3为本发明实施例一中第二线程或第三线程将二进制串发送给客户端浏览器的流程示意图。参看图3,根据本发明一实施例,所述第二线程或第三线程将所述二进制串发送给所述客户端浏览器,以使所述客户端浏览器对所述二进制串进行解析操作(步骤104),可包括:

步骤1041、判断所述客户端浏览器是否支持websocket通信机制。

websocket(网络套接字)是html5开始提供的一种在单个tcp连接上进行全双工通讯的协议。其最大特点是服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息。

由于有的客户端浏览器可能不支持websockets通信机制,因此,为了兼容不同的客户端浏览器,尤其是一些低版本的浏览器,根据客户端浏览器所支持的通信协议,采用相应的通信方式将所述二进制串发送给所述客户端浏览器,需要在第二线程或第三线程将所述二进制串发送给所述客户端浏览器之前,判断所述客户端浏览器是否支持websocket通信机制。若支持websocket通信机制则可直接采用websocket通信机制进行通信,若不支持websocket通信机制则自动降级为低版本浏览器所支持的长轮询等通信机制来进行通信。

判断客户端浏览器是否支持websocket通信机制的方法,比如,可通过浏览器控制台(如firebug或chrome开发工具)检测浏览器自身是否支持websockets,若不支持,window.websocket命令将返回“undefined”。

通过判断,若所述客户端浏览器支持websocket通信机制,则执行步骤1042,否则执行步骤1044。

步骤1042、与所述客户端浏览器建立websocket连接。

本实施例中,如果所述客户端浏览器支持websocket通信机制,可通过所述客户端浏览器的脚本调用通信接口封装包中封装的websocket接口建立websocket连接。

所述通信接口封装包安装在所述客户端浏览器中,所述通信接口封装包中至少封装有网络套接字接口。这样,若客户端浏览器支持websocket通信机制则可直接采用所述通信接口封装包中封装的网络套接字接口,便于websocket连接的快速建立。

在本发明的一个实施例中,如果所述客户端浏览器支持websocket通信机制,通过所述客户端浏览器的javascript调用socket.io中封装的websocket接口建立websocket连接。其中,所述socket.io为一种通信接口封装包,安装在所述客户端浏览器中,所述socket.io中封装有websocket、长轮询(longpolling)、flashsocket等多种通信机制的接口,支持websocket、longpolling、flashsocket等多种通信机制。

本实施例中,如果所述客户端浏览器支持websocket通信机制,通过所述客户端浏览器的javascript调用socket.io中封装的websocket接口建立websocket连接,这样可基于现有的socket.io来进行websocket连接的建立,便于实现。

步骤1043、所述第二线程或第三线程根据所述websocket连接,将所述二进制串透传给所述客户端浏览器,以使所述客户端浏览器对所述二进制串进行解析操作;其中,所述客户端浏览器和所述客户端直播应用程序两端均兼容二进制协议。

在服务器与客户端浏览器之间建立websocket连接之后,若第二线程从客户端直播应用程序已读取二进制串,服务器则不需要在接收到客户端浏览器发送的二进制串获取请求后才向客户端浏览器发生所述二进制串,而是可以直接向客户端浏览器发生所述二进制串,由此可提高数据传输效率。

进一步地,客户端直播应用程序和客户端浏览器两端均兼容二进制协议,客户端直播应用程序只需对要发送的数据进行序列化即可组织数据包,客户端浏览器对接收的二进制串只需进行反序列化即可获得数据包,这样可避免因两端协议的不同而进行协议的转换工作,能够进一步提高数据传输效率。

步骤1044、接收所述客户端浏览器主动发起的二进制串获取请求。

如果所述客户端浏览器不支持websocket通信机制,则可采用长轮询通信机制,在长轮询通信机制下,客户端浏览器可向服务器主动发起二进制串获取请求。在客户端浏览器没有主动发起二进制串获取请求的情况下,服务器不主动将二进制串传给客户端浏览器。

步骤1045、所述第二线程或第三线程根据所述二进制串获取请求,将所述二进制串透传给所述客户端浏览器。

服务器根据所述二进制串获取请求,将二进制串传给客户端浏览器。具体地,可通过所述第二线程或第三线程根据所述二进制串获取请求,将所述二进制串透传给所述客户端浏览器,以使所述客户端浏览器对所述二进制串进行解析操作。

本实施例中,如果所述客户端浏览器不支持websocket通信机制,则服务器等待接收客户端浏览器主动发起的二进制串获取请求,服务器根据所述二进制串获取请求,将所述二进制串透传给所述客户端浏览器,以使所述客户端浏览器对所述二进制串进行解析操作,以确保在客户端浏览器不支持websocket通信机制的情况下,也能正常进行数据传输。

具体地,若所述客户端浏览器不支持websocket通信机制,则通过所述客户端浏览器的脚本自动调用通信接口封装包中封装的所述客户端浏览器所支持的通信接口如长连接接口建立网络连接。

本实施例中,通信接口封装包中封装有多种通信接口,如果客户端浏览器不支持websocket通信机制,则可自动采用所述客户端浏览器所支持的通信接口建立网络连接,比如自动采用低版本的浏览器所支持的长连接接口建立网络连接,这样可较好的兼容不同浏览器来实现网络通讯。

进一步地,若所述客户端浏览器不支持websocket通信机制,则可通过所述客户端浏览器的javascript调用socket.io中封装的长轮询接口建立网络连接,这样可基于现有的socket.io来进行长连接的建立,便于实现。

图4为本发明实施例二客户端之间的通讯装置结构示意图,参看图4,本实施例的装置应用于网络视频直播系统中的服务器,所述装置可包括:连接管理模块11和数据处理模块12。

连接管理模块11,用于通过第一线程接收第一网络连接,将接收的第一网络连接分配给第二线程;通过所述第一线程接收第二网络连接,将接收的第二网络连接分配给第二线程或第三线程;其中,所述第一线程为单一线程,所述第一网络连接为客户端直播应用程序发起的网络连接;所述第二网络连接为客户端浏览器发起的网络连接。

所述第一线程为单一线程,用来管理多个网络连接。所述第二线程为具体处理读、发送等操作的业务处理线程。第一线程与第二线程之间可采用wait(等待)、notify(通知)等方式通讯。所述第一网络连接为客户端直播应用程序发起的网络连接。第一线程可将接收的第一网络连接分配至第二线程的队列中,便于第二线程从其队列中获取所述第一网络连接。

客户端直播应用程序与客户端浏览器均可接入直播系统的服务器。本实施例中,采用javanio非阻塞模式来实现客户端直播应用程序与客户端浏览器高效接入直播系统的服务器。javanio是javanewio的简称,是在jdk1.4里提供的新的api(applicationprogramminginterface,应用程序编程接口)。javanio的非阻塞模式,可通过使用一个单一线程管理多个网络连接,具体的读、发送等操作由其他的业务处理线程来完成,因此,本实施例中,采用javanio非阻塞模式来实现客户端直播应用程序与客户端浏览器高效接入直播系统的服务器,可提高服务器的接入能力,能够使服务器有效承载大量连接的建立和数据传输工。所述多个网络连接包括客户端直播应用程序的网络连接和客户端浏览器的网络连接,其中,客户端直播应用程序的网络连接可为多个,客户端浏览器的网络连接也可为多个。

所述第二网络连接为客户端浏览器发起的网络连接。所述客户端浏览器可以是ie浏览器,googlechrome或火狐浏览器等。

所述第一线程接收第二网络连接,即可在客户端浏览器与服务端之间建立第二网络连接。所述第一线程将接收的第二网络连接可直接分配给所述第二线程,通过所述第二线程将所述二进制串发送给所述客户端浏览器。本发明实施例不限于此,在另一实施例中,所述第一线程也可将接收的第二网络连接分配给所述第二线程之外的其它业务处理线程,比如分配给第三线程,具体地,第一线程可先将读取的二进制串保存在缓存区中,在第一线程接收到第二网络连接后,将第二网络连接分配给第三线程,第三线程从所述缓存区中读取所述二进制串,将所述二进制串发送给所述客户端浏览器。

数据处理模块12,用于通过所述第二线程根据所述第一网络连接,读取所述客户端直播应用程序发送的二进制串;通过所述第二线程或第三线程将所述二进制串发送给所述客户端浏览器,以使所述客户端浏览器对所述二进制串进行解析操作。

如前所述,本实施例中,客户端直播应用程序与客户端浏览器两端均兼容二进制协议。客户端直播应用程序与客户端浏览器两端之间通过服务器通讯时,服务器可将客户端直播应用程序发送的二进制串直接透传给客户端浏览器,无需进行拆包处理或进行数据转换即可完成数据传输,有效提升了传输效率。

根据本发明一实施例,所述数据处理模块12,具体用于:若所述客户端浏览器支持websocket通信机制,则与所述客户端浏览器建立网络套接字连接,通过所述第二线程或第三线程根据所述网络套接字连接,将所述二进制串透传给所述客户端浏览器,以使所述客户端浏览器对所述二进制串进行解析操作;其中,所述客户端浏览器和所述客户端直播应用程序两端均兼容二进制协议。

websocket是html5开始提供的一种在单个tcp连接上进行全双工通讯的协议。其最大特点是服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息。

在服务器与客户端浏览器之间建立websocket连接之后,若第二线程从客户端直播应用程序已读取二进制串,服务器则不需要在接收到客户端浏览器发送的二进制串获取请求后才向客户端浏览器发生所述二进制串,而是可以直接向客户端浏览器发生所述二进制串,由此可提高数据传输效率。

进一步地,客户端直播应用程序和客户端浏览器两端均兼容二进制协议,客户端直播应用程序只需对要发送的数据进行序列化即可组织数据包,客户端浏览器对接收的二进制串只需进行反序列化即可获得数据包,这样可避免因两端协议的不同而进行协议的转换工作,能够进一步提高数据传输效率。

若所述客户端浏览器支持网络套接字通信机制,则通过所述客户端浏览器的脚本调用通信接口封装包中封装的网络套接字接口建立网络套接字连接,所述第二线程或第三线程根据所述网络套接字连接,将所述二进制串透传给所述客户端浏览器;其中,所述通信接口封装包安装在所述客户端浏览器中,所述通信接口封装包中至少封装有网络套接字接口。这样,若客户端浏览器支持websocket通信机制则可直接采用所述通信接口封装包中封装的网络套接字接口,便于websocket连接的快速建立。

在本发明的一个实施例中,如果所述客户端浏览器支持websocket通信机制,可通过所述客户端浏览器的javascript调用socket.io中封装的websocket接口建立websocket连接。所述第二线程或第三线程根据所述websocket连接,将所述二进制串透传给所述客户端浏览器。

其中,所述socket.io作为一种通信接口封装包,安装在所述客户端浏览器中,所述socket.io中封装有websocket、长轮询(longpolling)、flashsocket等多种通信机制的接口,支持websocket、longpolling、flashsocket等多种通信机制。

本实施例中,如果所述客户端浏览器支持websocket通信机制,通过所述客户端浏览器的javascript调用socket.io中封装的websocket接口建立websocket连接,这样可基于现有的socket.io来进行websocket连接的建立,便于实现。

由于有的客户端浏览器可能不支持websockets通信机制,因此,为了兼容不同的客户端浏览器,根据客户端浏览器所支持的通信协议,采用相应的通信方式将所述二进制串发送给所述客户端浏览器,需要在第二线程或第三线程将所述二进制串发送给所述客户端浏览器之前,判断所述客户端浏览器是否支持websocket通信机制。若支持websocket通信机制则可直接采用websocket通信机制进行通信,若不支持websocket通信机制则自动降级为低版本浏览器所支持的长轮询等通信机制来进行通信。

判断客户端浏览器是否支持websocket通信机制的方法,比如,可通过浏览器控制台(如firebug或chrome开发工具)检测浏览器自身是否支持websockets,若不支持,window.websocket命令将返回“undefined”。

根据本发明一实施例,所述数据处理模块12,还具体用于:若所述客户端浏览器不支持网络套接字通信机制,则接收所述客户端浏览器主动发起的二进制串获取请求,通过所述第二线程或第三线程根据所述二进制串获取请求,将所述二进制串透传给所述客户端浏览器,以使所述客户端浏览器对所述二进制串进行解析操作,以确保在客户端浏览器不支持websocket通信机制的情况下,也能正常进行数据传输。

本实施例中,如果所述客户端浏览器不支持websocket通信机制,所述数据处理模块则通过所述客户端浏览器的脚本自动调用通信接口封装包中封装的所述客户端浏览器所支持的通信接口建立网络连接,其中,所述通信接口封装包安装在所述客户端浏览器中;接收所述客户端浏览器主动发起的二进制串获取请求;所述第二线程或第三线程根据所述二进制串获取请求,将所述二进制串透传给所述客户端浏览器,这样,若客户端浏览器不支持websocket通信机制则可直接采用所述通信接口封装包中封装的客户端浏览器所支持的通信接口建立网络连接,便于网络连接的快速建立。

在本发明一实施例中,若所述客户端浏览器不支持网络套接字通信机制,则可采用长轮询通信机制在服务器与客户端浏览器之间建立网络连接,在长轮询通信机制下,客户端浏览器可向服务器主动发起二进制串获取请求。在客户端浏览器没有主动发起二进制串获取请求的情况下,服务器不主动将二进制串传给客户端浏览器。

在本发明一实施例中,所述数据处理模块通过所述客户端浏览器的javascript调用socket.io中封装的长轮询接口建立网络连接。,这样可基于现有的socket.io来进行长连接的建立,便于实现。

本发明实施例提供的客户端之间的通讯装置,连接管理模块通过第一线程接收第一网络连接和第二网络连接,将接收的第一网络连接分配给第二线程,将接收的第二网络连接分配给第二线程或第三线程;数据处理模块通过所述第二线程根据所述第一网络连接,读取客户端直播应用程序发送的二进制串,通过所述第二线程或第三线程将所述二进制串发送给所述客户端浏览器,以使所述客户端浏览器对所述二进制串进行解析操作,这样,可通过一个单一线程(第一线程)来管理多个网络连接(第一网络连接和第二网络连接),具体的读、发送等操作由其他处理线程(第二线程或第三线程)来负责处理,将网络连接的管理与连接后的数据操作分开布置并分别由不同的线程来处理,由此能够提高视频直播系统中服务器的接入能力;进一步地,客户端直播应用程序发送的数据为二进制串,客户端浏览器接收到的数据也为二进制串,这样客户端直播应用程序发送的二进制串经服务器可直接传递给客户端浏览器,期间无需进行拆包或协议转换等操作,有利于提高数据传输效率。

本发明实施例还提供一种电子设备,图5为本发明电子设备一个实施例的结构示意图,可以实现本发明图1所示实施例的流程,如图5所示,上述电子设备可以包括:壳体41、处理器42、存储器43、电路板44和电源电路45,其中,电路板44安置在壳体41围成的空间内部,处理器42和存储器43设置在电路板44上;电源电路45,用于为上述电子设备的各个电路或器件供电;存储器43用于存储可执行程序代码;处理器42通过读取存储器43中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例所述的通讯方法。

处理器42对上述步骤的具体执行过程以及处理器42通过运行可执行程序代码来进一步执行的步骤,可以参见本发明方法实施例的描述,在此不再赘述。

该电子设备以多种形式存在,包括但不限于服务器,所述服务器为提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述任一实施例提供的通讯方法。

本发明的实施例还提供一种应用程序,所述应用程序被执行以实现本发明任一实施例提供的方法。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。

尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1