html中websocket获取数据,一种基于WebSocket的获取客户端硬件信息的方法与流程

bb304b36ece18d2d7f83c347ddadb8d9.gif

本发明属于网络通信领域,具体涉及一种基于WebSocket获取客户端硬件信息的方法。

背景技术:

HTML5技术的日臻成熟和HTML5规范的最终定型,作为一项新兴的技术和具备支持跨平台特性,HTML5越来越受到开发者的欢迎。WebSocket作为HTML5关键技术之一,其支持全双工通信和节省网络带宽的优势,也是开发者们在进行Web应用通信甚至跨平台通信开发时优先选择的通信方式。

在标准WebSocket协议中,WebSocket对象具有的属性和方法比较有限,如:属性值URL、方法send和close等。在开发Web应用过程中,有时候对发送的数据报文需要包含的信息有更多的要求,如:报文中需要包含发起WebSocket请求的客户端相关信息。但是,目前缺乏一种基于WebSocket的通过调用扩展的JavaScript接口获取客户端硬件信息的方法。

此外,由于发送数据报文需要获取而非修改客户端信息,有的客户端信息是受到保护且不可修改的,所以对JavaScript获取相关信息具有一定的安全性要求。

技术实现要素:

本发明的目的在于克服目前WebSocket对象中没有包含获取客户端硬件信息的属性的缺陷,提出了一种基于WebSocket获取客户端硬件信息的方法,该方法通过调用扩展的JavaScript接口实现WebSocket对象获取客户端硬件信息,而且该方法的安全性高,确保客户的硬件信息不能被修改。

为了实现上述目的,本发明提供了一种基于WebSocket的获取客户端硬件信息的方法,所述方法包括:

步骤1)对通用WebSocket对象扩展自定义JavaScript接口函数;

步骤2)客户端创建WebSocket对象,并建立与服务器的连接,调用所述步骤1)的扩展自定义JavaScript接口函数;

步骤3)Web引擎内核根据WebSocket对象调用的接口函数获取相应设备硬件信息,返回给客户端;

步骤4)客户端将返回的设备硬件信息包含在数据报文中发送到服务器;

步骤5)所述服务器对数据报文进行处理,并根据设备硬件信息将处理结果返回到客户端;

步骤6)客户端根据返回的处理结果继续对服务器发送数据报文,直至通信完毕;

步骤7)通信完毕后,关闭WebSocket连接。

上述技术方案中,所述步骤1)具体包括:

步骤1-1)在浏览器内核中,对通用WebSocket对象添加JavaScript接口属性值或方法;

步骤1-2)定义步骤1-1)扩展的JavaScript接口属性值或方法在浏览器内核的函数映射关系,映射到浏览器内部自定义函数;

步骤1-3)在步骤1-2)的内部自定义函数中,调用WebSocket协议实现的扩展自定义的获取设备硬件信息的函数;

步骤1-4)在WebSocket协议实现内部,添加自定义的获取设备硬件信息函数;

所述自定义的获取设备硬件信息函数为WebSocket对象的自定义属性值或方法,调用后返回特定值作为用户所请求的客户端设备硬件信息;所述设备硬件信息为MAC地址、IP地址或设备ID。

上述技术方案中,所述步骤2)的扩展自定义JavaScript接口函数为步骤1-4)的自定义的获取设备硬件信息函数。

本发明的优势在于:

1、本发明的方法通过在浏览器内核扩展基于WebSocket协议的JavaScript接口,调用接口可获得客户端硬件信息,如MAC地址、IP地址、设备ID等,并作为数据报文的一部分发送到服务器;该方法适用于服务器要求获取客户端信息作为标识的情况,特别是在多客户端多平台联动操作的情况下有较高的实用价值;

2、本发明的方法基于WebSocket实现,而WebSocket是HTML5协议的重要组成部分,其具备HTML5的跨平台特性,在跨平台通信方面有较大的优势;

3、本发明的方法将获取客户端信息的方法封装于WebSocket协议中,通过WebSocket对象调用的方式获取只读的属性值或函数返回值,用户只能获取而不能修改客户端信息,能够较大的保证客户端信息的安全性。

附图说明

图1是本发明的基于WebSocket获取客户端硬件信息的方法的示意图;

图2是本发明的自客户端JavaScript到浏览器内核WebSocket协议的函数调用过程图。

具体实施方式

下面结合附图和具体实施例对本发明做进一步详细地说明。

如图1所示,一种基于WebSocket的获取客户端硬件信息的方法,所述方法具体包括:

步骤1)对通用WebSocket对象扩展自定义JavaScript接口;

所述通用WebSocket对象为客户端创建的所有WebSocket对象;

如图2所示,所述步骤1)具体包括:

步骤1-1)在浏览器内核中,对通用WebSocket对象添加JavaScript接口属性值或方法;

步骤1-2)定义步骤1-1)扩展的JavaScript接口属性值或方法在浏览器内核的函数映射关系,映射到浏览器内部自定义函数;

步骤1-3)在步骤1-2)的内部自定义函数中,调用WebSocket协议实现的扩展自定义的获取设备硬件信息的函数;

步骤1-4)在WebSocket协议实现内部,添加自定义的获取设备硬件信息函数;

所述自定义的获取设备硬件信息函数为WebSocket对象的自定义属性值或方法,调用后返回特定值作为用户所请求的客户端设备硬件信息。

所述设备硬件信息为MAC地址、IP地址或设备ID。

步骤2)客户端创建WebSocket对象,并建立与服务器的连接,调用所述步骤1)的扩展JavaScript接口函数;

所述扩展自定义JavaScript接口函数为所述步骤1-4)的自定义的获取设备硬件信息函数。

步骤3)Web引擎内核根据WebSocket对象调用的接口函数获取相应设备硬件信息,返回给客户端;

步骤4)客户端将返回的设备硬件信息包含在数据报文中发送到服务器;

步骤5)所述服务器对数据报文进行处理,并根据设备硬件信息将处理结果返回到客户端;

步骤6)客户端根据返回的处理结果继续对服务器发送数据报文,直至通信完毕;

步骤7)通信完毕后,关闭WebSocket连接。

下面以获取客户端的MAC地址的为例,步骤1)的具体实现过程为:

假设服务器对上报报文格式要求为:

{"operator":"sample","value":"sample","clientMac":"clientMacAddr"}

则客户端JavaScript需要将获取的客户端MAC地址包含于clientMacAddr字段中,关键部分JavaScript编写方式如下:

websocket=new WebSocket(“ws://sample/”);

var clientMacAddr=websocket.DeviceMAC||websocket.getDeviceMAC();

var msg="{\"operator\":\"sample\",\"value\":\"sample\",\"clientMac\":\""+clientMacAddr+"\"}";

websocket.send(msg);

其中,DeviceMAC为WebSocket对象的属性,getDeviceMAC()为WebSocket对象的方法。

浏览器内核对WebSocket对象扩展自定义的JavaScript接口,包括以下部分:

在浏览器内核中,增加WebSocket对象的JavaScript接口属性值DeviceMAC或方法getDeviceMAC();

定义JavaScript接口属性值或方法在浏览器内核的函数映射关系:

DeviceMAC->jsWebSocketDeviceMAC()

getDeviceMAC()->jsWebSocketPrototypeFunctionGetDeviceMAC()

浏览器内核函数实现,调用WebSocket协议内部自定义函数DeviceMAC()或getDeviceMAC();

在WebSocket协议实现内部,添加自定义的函数DeviceMAC()或getDeviceMAC(),实现获取设备信息的功能。以上所述仅为本发明的具体实施方式,并非用于限定本发明的保护范围,本领域的技术人员应当理解,在不脱离发明原理的前提下,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的保护范围中。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值