前端开发_大屏技术

——李郑雄 2018-04-26

1、开发流程概述:

主要流程包含以下步骤:需求调研,场景布局, UI设计, DEMO确认,场景切图,场景开发,测试部署,上线演示,迭代调整,数据同步及接入,正式上线。

2、 requireJS框架:requireJS使用教程链接

require是一个轻量级框架,用于模块化的设计网页中的各组成部分然后再将这些模块组合在一起。各模块间相对独立、互不影响。

require.js使用了不同于传统

3、Echarts框架(网页视图技术):

Echarts是一个使用JavaScript实现的开源可视化库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖轻量级的矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表。遵循原则:交互是从数据中发掘信息的重要手段,“总览为先,缩放过滤按需查看细节”是数据可视化交互的基本需求。

4、webSocket技术(来自于网络):

1)、web socket基本概念:

Web socket是Web领域的一种实时推送技术也被称作Realtime技术,这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新。其本质上是一个基于TCP的协议,协议通过第一个request建立了TCP连接之后,之后都不需要再发送 HTTP header就能交换数据。websocket协议是一种名为"ws"的全新的协议(不属于http无状态协议),因此websocket连接地址通常是这样的写法:ws://**。

2)、js中的web sockets:

为了实现在单独的持久连接上提供全双工、双向通信的功能,HTML5中增加了连接API-WebSockets。在js中创建了WebSocket之后,会有一个HTTP请求发送到浏览器以发起连接。在取得服务器响应后,建立的连接会使用HTTP升级,从HTTP协议转变为web socket协议。具体的过程如下:

a)客户端通过发送HTTP请求执行双方握手过程,发送的数据报文格式如下:

************************************************************************

GET /chat HTTP/1.1

Host: server.example.com

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==

Sec-WebSocket-Protocol: chat, superchat

Sec-WebSocket-Version: 13

Origin: http://example.com

************************************************************************

Upgrade:websocket参数值表明这是WebSocket类型的请求,

Sec-WebSocket-Key是WebSocket客户端发送的一个 base64编码的密文,要求服务端必须返回一个对应加密的

Sec-WebSocket-Accept应答,否则客户端会抛出Error during

WebSocket handshake错误,并关闭连接。

b)服务器端处理完请求之后生成响应报文返回给web端,表示已成功建立了Websocket连接:

************************************************************************

HTTP/1.1 101 Switching Protocols

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=

Sec-WebSocket-Protocol: chat

************************************************************************

参数Sec-WebSocket-Accept是经过服务器确认并且加密过后的Sec-WebSocket-Key,Sec-WebSocket-Protocol则表示最终使用的协议。可以查阅WebSocket协议栈了解WebSocket客户端和服务端更详细的交互数据格式。

3)、web sockets API:

要创建Web Socket,先实例化一个webSocke对象并传入URL,浏览器解析和识别后,就会通过HTTP请求 创建该URL所指向的连接:

************************************************************************

var socket=new WebSocket('ws:www.example.com/server.php');

************************************************************************

在这里必须给WebSocket传入绝对URL,同源策略对Web Sockets不适用,因此可以通过它打开任何站点的连接。

WebSocket是个协议归属于IETF, WebSocket API 是一个Web API,归属于W3C, 两个规范是独立发布的。 广义上的HTML5里面包含的是WebSocket API,并不是WebSocket。简单的说可以把 WebSocket当成 HTTP,WebSocket API 当成 Ajax。

WebSocke有一个表示当前状态的readyState属性:

WebSocket.OPENING(0):正在创建连接

WebSocket.OPEN(1):已经建立连接

WebSocket.CLOSING(2):正在关闭连接

WebSocket.CLOSING(3):已经关闭连接

readyState的值永远从0开始。 要关闭socket连接,可以在任何时候调用close()方法:socket.close();

4)、发送和接收数据:  Web Socket打开之后,就可以通过连接发送和接收数据。要向服务器发送数据,使用send()方法,并传入任意字符串。下:

************************************************************************

var socket = new WebSocket('ws:www.example.com/server.php');

socket.send('hello world');

************************************************************************

在这里需要注意:因为WebSockets只能通过连接发送纯文本数据,所以对于复杂的数据结构,在通过连接发送之前,必须进行序列化。 当服务器向客户端发来消息时,WebSocket对象就会触发message事件。这个message事件与其他传递消息的协议类似,也是把返回的数据保存在event.data属性中:

************************************************************************

socket.onmessage = function(e){var data = e.data;。。。。。。 };

************************************************************************

值得一提的是data的数据格式也是字符串,如果想得到其他格式的数据,必须手工解析这些数据。

5)、其他事件:WebSocket对象还有在连接声明周期的不同阶段触发的其他三个事件:

open:在成功建立连接时触发

error: 在发生错误时触发,连接不能持续

close:在连接关闭时触发

WebSocket对象不支持DOM2级事件侦听器,因此必须使用DOM0级语法分别定义每个事件处理程序。在这三个事件中,只有close事件的event对象有额外的信息。这个事件的事件对象有三个额外的属性:wasClean、code和reason。其中wasClean是一个布尔值,表示连接是否已经明确的关闭;code是服务器返回的数值状态码;而reason是一个字符串,包含服务器发回的信息。可以将这些信息显示给用户。

************************************************************************

socket.onclose = function(event){

console.log(‘wasclean?+event.wasClean+’,code=’+event.code+’reason=’+event.reason);

}

************************************************************************

6)、建立连接的握手:

当Web应用程序调用new WebSocket(url)接口时,Browser就开始了与地址为url的WebServer建立握手连接的过程:

a). Browser与WebSocket服务器通过TCP三次握手建立连接,如果这个建立连接失败,那么后面的过程就不会执行,Web应用程序将收到错误消息通知。

b). 在TCP建立连接成功后,Browser/UA通过http协议传送WebSocket支持的版本号,协议的字版本号,原始地址,主机地址等等一些列字段给服务器端。

c). WebSocket服务器收到Browser/UA发送来的握手请求后,如果数据包数据和格式正确,客户端和服务器端的协议版本号匹配等等,就接受本次握手连接,并给出相应的数据回复,同样回复的数据包也是采用http协议传输。

d). Browser收到服务器回复的数据包后,如果数据包内容、格式都没有问题的话,就表示本次连接成功,触发onopen消息,此时Web开发者就可以在此时通过send接口想服务器发送数据。否则,握手连接失败,Web应用程序会收到onerror消息,并且能知道连接失败的原因。

这个握手很像HTTP,但是实际上却不是,它允许服务器以HTTP的方式解释一部分handshake的请求,然后切换为websocket。

7)、数据传输:WebScoket协议中,数据以帧序列的形式传输。考虑到数据安全性,客户端向服务器传输的数据帧必须进行掩码处理。服务器若接收到未经过掩码处理的数据帧,则必须主动关闭连接。服务器向客户端传输的数据帧一定不能进行掩码处理。客户端若接收到经过掩码处理的数据帧,则必须主动关闭连接。针对上情况,发现错误的一方可向对方发送close帧(状态码1002,表示协议错误)以关闭WebSocket(握手) 连接。

webSocket的优点:

1)、服务器与客户端之间交换的标头信息很小,大概只有2字节;

2)、客户端与服务器都可以主动传送数据给对方;

3)、不用频繁创建及销毁TCP请求,减少网络带宽资源的占用节省服务器资源;

大屏需要JAVA什么技术_前端之大屏相关推荐

  1. 【有奖征文】WEB前端大作战,走在技术最前端!

    本文分享自华为云社区<[有奖征文]WEB前端大作战,走在技术最前端!>,原文作者:技术火炬手 . 近几年大家对于WEB前端的关注度很高, 比如整体势头发展良好,各种技术百花齐放,人才稀缺, ...

  2. nuxt解决首屏加载慢问题_滴普大前端 | 滴普是如何实现首屏加载性能优化的?...

    决定优化方向 首先打开 Inspect - Network 查看请求情况,从图片可以看出,DOMContentLoaded 时间为 2.67s,Load 时间为 3.45s,资源交换为 2.4MB. ...

  3. c++和java哪个难_前端和Java开发哪个难?哪个学习容易一点?

    首先我说一下Java和web两者的区别: Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征. ...

  4. java前沿技术_互联网百强企业架构师告诉你,Java应该这么学!云和数据超全面Java中级程序员学习路线图重磅发布!...

    作为常居编程语言排行榜第一名的编程语言,Java语言以其稳定性.健壮性著称,是一门非常成熟的编程语言,多年来一直是国际上众多企业的首选编程语言. Java语言不仅吸收了C++语言的各种优点,还摒弃了C ...

  5. 大数据技术_ 基础理论 之 大数据概念与应用

    1.1 大数据的概念与意义 1.从"数据"到"大数据" 时至今日,"数据"变身"大数据","开启了一次重大的时 ...

  6. java验证码技术_验证码技术(JavaWeb 中验证码的实现 )

    二.实践 下面通过程序演示验证码产生和实现验证的过程. 1.验证码的产生 创建一个Servlet完成验证码的产生.首先通过随机数的产生类Random随机产生一个4位的验证码, 并将其存入session ...

  7. led屏背后线路安装图解_科普:网格屏是什么意思?LED网格屏怎么安装

    随着LED显示技术成熟,在传统小间距.室内外广告.格栅屏等领域,竞争日益激烈.LED软网屏为市场提供了更多的选择和可能性,丰富了LED显示屏产品的种类和显示方式,拓展了创意软屏领域. 知乎视频​www ...

  8. 大数据应用项目创新大赛_温州首届大数据应用创新大赛决赛名单公布!有你的单位吗?...

    如何发掘和培养一批优秀大数据应用领域专业人才,让大数据应用精准服务经济发展?昨日上午,"图科杯"首届温州市大数据应用创新大赛(初赛)拉开帷幕.据悉,这是温州贯彻落实我省大数据发展实 ...

  9. 盐城大数据产业园人才公寓_岳西大数据产业园规划设计暨建筑设计方案公布,抢先一睹效果图...

    近日,岳西县大数据产业园规划设计暨建筑设计方案公布. 岳西县大数据产业园项目总占地面积17014.10㎡(约合25.52亩),拟建总建筑面积约为61590.84㎡(地上建筑面积39907.49㎡,地下 ...

  10. 大数据应用项目创新大赛_全国高校大数据应用创新大赛

    2015年国务院发布<促进大数据发展行动纲要>,标志着大数据战略正式上升为国家战略.为配合国家大数据战略,加快产业人才培养,教育部增设了"数据科学与大数据技术"本科专业 ...

最新文章

  1. 搭建hadoop2.6.0 HA及YARN HA
  2. 传感器c语言开发,Android环境传感器开发教程
  3. thinkphp文件上传在$_files里面看不到
  4. JQuery Basic Features Quick Walkthrough
  5. youtube根据vedioId获取视频相关信息
  6. Halcon算子盘点:Chapter 16:System
  7. 通过日志恢复MSSQL数据案例
  8. 岗位推荐 | 清华大学CoAI实验室招聘博士后
  9. linux 进程映射空间 libc,为什么不能在64位内核的32位Linux进程中映射(MAP_FIXED)最高虚拟页面?...
  10. CountDownLatch和cyclicbarrier的使用
  11. 推荐两个BAT编辑器
  12. 世界500强面试题(经典)
  13. c语言求球的体积用const,牛客练习赛41 E.球的体积并(计算几何)
  14. 从零开始做运营-读书笔记一
  15. java 获取本年月份、本月/本周所有日期
  16. 清华大学建筑学计算机,建筑专业十强大学排名:清华第一,第四堪称黑马
  17. 新房装修选电视机还是投影仪?装修投影仪避坑指南
  18. [CVPR2021]Birds of a Feather: Capturing Avian Shape Models from Images
  19. mac c语言 新手,第1次买Mac必看,新手买Mac全攻略!
  20. 2012最新网站手工注入详解教程

热门文章

  1. 盖茨再捐200亿美元,谷歌云转投ARM,推特员工因马斯克遭CEO警告,今日更多大新闻在此...
  2. CPU玩的是效率!超线程双核PK物理三核
  3. word添加参考文献和标注的方法
  4. Flutter bottomSheet的使用
  5. 终端上网_家里wifi上网很慢怎么办?通过这4招,让网速快到飞起来
  6. 他是年薪几十万的微软工程师,现在却在成都街头收破烂......
  7. 专业商标制作,免费logo在线设计
  8. iOS实现炫酷悬停交互视图
  9. 2018/9/27---高质量SCI论文撰写方法以及ESI引用经验交流 韩光洁教授(大连理工)
  10. 共识,权威以及去中心化的区块链