信 息 技 术
WebSocket协议在电商平台中的应用
唐淑华 王遵义*
(浙江万里学院 浙江宁波 315100)
①
摘 要:在飞速发展的现代社会,及时、有效、准确的信息传送对各行各业发展尤为重要。B2C模式下的电商企业,客户
满意度显著的影响着它的发展,提高客户的消费体验十分必要,因此,准确、有效、及时的信息传送就显得尤为重要。传统的基于HTTP协议的单向信息传送方式已无法满足人们的需求,社会需要更加高效的方式。而WebSocket协议是一种典型的双向通信协议,它与HTTP一样是通过TCP来传输数据,与HTTP不同的是,WebSocket协议的客户端与服务端在一次握手成功后就可以无数次进行数据的发送与接收,极大限度地保证了信息的时效性。关键词:客户满意度 WebSocket协议 数据传输 双向通信 中图分类号:TP311.5 文献标识码:A 文章编号:1672-3791(2018)04(a)-0020-02
电商行业经过多年的发展,如今已进入一个全面发展的阶段。网购成为很多人的一个消费习惯,甚至成为一种生活乐趣。但是网购过程中我们也经常遇到一些问题,典型的一个就是缺货问题。想买的东西断货了,什么时候到货也不确定,也没有提醒。WebSocket技术能有效解决上述问题。
要的流量,减少占用网络资源,减少信息的延缓同时节约了服务器资源。WebSocket协议仅需一次握手,当连接完成,服务端与客户端就可以自由发送数据、信息,直至TCP关闭握手。
2 WebSocket事件、方法
WebSocket对象可以触发4种事件,在建立连接后触发open事件,客户端在收到服务端发送的数据时触发message事件,在通信过程中如发生错误是触发error事件,在连接关闭时触发close事件[2]。
WebSocket对象有发送数据的send()方法和关闭连接的close()方法。send()方法是在服务端和客户端建立连接后调用,close()是在数据传送结束调用。2.1 WebSocket案例
WebSocket最常见的案例是聊天室系统。客户端部分,使用Chat.socket.onopen()触发onopen事件建立连接,用send方法将message对象发送至服务端。程序运行过程中,首先调用Chat.initialize()函数判断该传输协议的类型是https还是http,https协议是由SSL+HTTP协议构建的,相较于http更加安全。接下来还需要判断所用浏览器是否支持WebSocket,最早支持WebSocket协议的浏览器应该是chrome,而目前流行的浏览器基本能够支持WebSocket协议,例如:Chrome、Firefox、IE等,该判断方法是调用Chat.connect(host)。信息的发送以及接收调用了Chat.sendMessage()、Chat.socket.onmessage()方法。最后调用Chat.socket.onclose()方法触发onclose事件关闭连接。这里并未用到onerror事件,@onerror一般可以用来注解WebSocket端点的方法,使得它能够处理WebSocket实现处理入站消息时发生的任何的错误[2]。前台要用WebSocket连接到后台,需要新建一个WebSocket对象,然后就可以和服务器端进行交互,也就是浏览器发送消息给服务器端,同时要验证输入框的内容是否为空,然后接受服务端发送的消息,把它动态地添加到聊天框中。
服务端部分,首先定义一个WebSocket服务端。value
1 WebSocket协议介绍
WebSocket技术实现了信息的双向通信,能够有效应对
如今信息传输不及时的问题。由于WebSocket技术是一项比较新的技术,它的应用相对较少,相关资料也比较缺乏,美国Danny Coward的《Java WebSocket编程》就比较详细地介绍了该技术,相关资料还有赵振等主编的《Web异步与实时交互iframe AJAX WebSocket 开发实战》等。随着信息技术以及社会去求得发展,相信很快WebSocket技术就会大范围的应用,在现实社会中发挥更大的作用。
WebSocket协议与Http协议存着差异。基于HTTP协议的Web应用是一种无状态单向的协议,它是由客户端主动发起握手请求,建立连接。然而很多情况下服务端才是信息的发布者,这就产生了矛盾,信息更新时间不确定,当出现新的信息,服务器却不能主动发送,导致了信息的延缓。为解决这类问题,也提出了“轮询”的方式来获得最新的信息,但是这样占用了大量的带宽,并且每次发送请求都会携带大量的协议头信息,造成资源浪费。ajax轮询、long poll都不能有效解决该问题。ajax轮询的原理是让浏览器每隔个几秒发送一次请求,询问服务器是否有新信息。long poll原理与ajax轮询相似,也是采用轮询的方式,不同的是long poll采取的是阻塞模型,即客户端发起连接后,如果没有消息产生,就不返回response给客户端,直到有消息才返回,返回之后,客户端再次建立连接。为解决这类问题,很多其他的协议陆续出现,WebSocket协议就是典型的异步全双工通信机制,它实现了服务端
[1]
与客户端的双向通道。
相较于HTTP协议,WebSocket协议能够节省很多不必
①作者简介:唐淑华(1994—),女,汉族,江苏盐城人,研究生在读,研究方向:物流信息技术应用。
通讯作者:王遵义(1961—),男,汉族,浙江仙居人,硕士,教授,研究方向:控制与检测,E-mail:80592705@qq.com。
20
科技资讯 SCIENCE & TECHNOLOGY INFORMATION
信 息 技 术
2018 NO.10SCIENCE & TECHNOLOGY INFORMATION科技资讯图1 实验过程图
作为访问地址。本个例子中:客户端连接到服务端,Set [3] 推送信息的方法。 2.2 WebSocket协议在电商平台中的应用 就WebSocket协议的特点,提出以电商平台为背景,进行信息的主动传递。当客户看中某个商品,商家断货了,此时客户可使用到货提醒按钮。同时服务器会将该用户的操作存入数据库,当该商品再次上架,库存大于0,立刻向用户发送多次的提醒。这里的客户端可以是网页也可以是安卓用户,服务器主动发送提醒的操作就是使用WebSocket协议。实验过程如图1所示,实验结果如图2所示。可以看出当用户忘记或者忽略了提醒,服务器可以多次不断提醒用户信息,直到商品再次售完或者用户关闭了此提醒。(上接19页) 图2 实验结果图 使用WebSocket协议的这一设计,一来可以节约带宽、 流量的成本,二来其实时性高于普通的协议,能够及时有效地提醒客户,提高客户满意度,促进商品的销售,有利于企业的发展。 虽然部分浏览器还不支持此协议,但随着信息技术的发展,实时技术的需求不断扩大,WebSocket协议所构建的应用程序必然会不断完善,风险性不断减低,WebSocket协议必将成为重要的、普遍的开发协议。 参考文献 [1] 聂开,张莎莎,王珏辉.WebSocket技术在Web端和服务端之间的应用[J].数字技术与应用,2016(7):77.[2] (美)Danny Coward,著.Java WebSocket编程[M].刘建,夏先波,译.北京:清华大学出版社,2015:31-38. [3] 赵振,王顺,于梦竹.Web异步与实时交互iframe AJAX WebSocket 开发实战[M].北京:人民邮电出版社,2016:72-80.戳,传感器1,传感器2,传感器3),其中时间戳作为一条记录的主键。向上用Tomcat接收浏览器发来的HTTP请求和Ajax请求。其中HTTP用来响应整个网页的请求,Ajax用来响应网页中局部的数据请求。2.4 系统测试 采集终端、网关、服务器三者依次启动,待系统稳定后,在浏览器可查看到数据定时向左平移,新数据定时在最右侧追加,通过曲线的变化可得知当前的能耗情况。 3 结语 本文研究了B/S模式下建筑能耗数据的采集与展示系统,提出了与之对应的系统架构。通过基于CC2530的ZigBee协调器和ESP8266的硬件开发,MySQL数据库、Tomcat服务器、SSM框架和Highchar图表设计框架的服务端开发,实现了用户跨平台实时查看能耗数据的功能。 同时,该系统还实现了系统管理员的登录,注册等功能,形成了完整的物联网管理体系。系统在实际项目中运行流畅,通过更改少量代码,便可应用于其他物联网项目。 2.2 网关 因为基础数据来源于ZigBee,所以,本系统将CC2530作为网关的主控芯片。在网关首次启动时,CC2530通过串口向ESP8266发送AT命令,来控制热点的工作模式、连接方式和接入点名称等信息。在热点稳定工作后,使用AT+CIPSEND=0,10\\r\\n命令向服务器端发送数据。其中CIPSEND表示此命令的功能,10表示要发送的数据长度,\\r\\n表示命令结束。 2.3 Web服务器和数据库 Web服务器向下提供了数据存储,向上提供了良好的用户接口。其通过Socket与网关建立TCP连接,接收网关向上的数据流并存储到数据库。数据库记录形式为(时间 图2 数据传输 参考文献 [1] 杨毅.建筑能耗监控软件平台设计与实现[D].大连理工 大学,2013. [2] 薛卫强.基于物联网的无线环境监测系统设计与软件的实现[D].燕山大学,2013. [3] 钱志鸿,王义君.面向物联网的无线传感器网络综述[J].电子与信息学报,2013,35(1):215-227. 科技资讯 SCIENCE & TECHNOLOGY INFORMATION 21 因篇幅问题不能全部显示,请点此查看更多更全内容