- 浏览: 166045 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
qq_21380041:
954414957@qq.com
HTML5数据可视化第二弹:打造最美3D机房 -
qq_21380041:
楼主,求代码
HTML5数据可视化第二弹:打造最美3D机房 -
luoaz:
楼主能不能传个源码的附件上来, 分享学习下呢?
HTML5+WebGL 3D机房开发实例 -
xiaosi1278:
你好能不能把你讲的源代码发一下!!做参考403541110@q ...
TWaver 3D 编辑器的使用(一)----设计3D场景以及数据绑定 -
TWaverGeek:
BigBird2012 写道您好,您能把您使用TWaver导入 ...
TWaver导入导出AutoCAD DXF图纸
TWaver HTML5 + Node.js + express + socket.io + redis(二)
- 博客分类:
- TWaver HTML5
在上一篇TWaver HTML5 + Node.js + express + socket.io + redis(一) 中,给大家介绍了Node.js 的安装;本篇将介绍Node.js的使用,您将了解到:
1. Node.js
的web框架:express
2. Node.js
的实时通讯框架:Socket.IO
3. Node.js
的redis客户端:redis
一. express
虽然用Node.js
写一个Hello
World很简单:
新建一server.js文件,内容如下:
require('http').createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(8080, "127.0.0.1");
然后打开命令行,进入server.js文件所在的目录,运行:node server.js,用浏览器打开http://localhost:8080/ 即能看到效果:
但稍微复杂的web应用就不能这么原始了,得借助于像express
这样的Web Framework
了。虽然express
提供了Session等功能,还有其他基于express的认证框架passport
等,但这里仅仅用express
作为静态网页服务:
将如下内容写入server.js文件:
//引入express模块,如果此处出错,请确认express已安装, //而且express在环境变量NODE_PATH目录中 var express = require('express'); //创建web服务 var server = express.createServer(); //以当前目录下的demo目录为web应用根目录 server.use(express.static(__dirname + '/demo')); //显示错误信息,以方便调试 server.use(express.errorHandler({ showStack: true, dumpExceptions: true })); //启动express web服务,监听8080端口 server.listen(8080);
然后在server.js文件所在的目录创建demo目录,并创建demo.html文件,内容如下:
<!DOCTYPE html> <html> <head> <title>Node.js Demo</title> </head> <body> <div> Hello Node.js! </div> </body> </html>
然后重启Node.js服务,用浏览器打开http://localhost:8080/demo.html
即能看到效果:
二. Socket.IO
Socket.IO提供了WebSockets服务,如果浏览器不支持HTML5标准的WebSocket,会用Flash代替,而且支持Json的自动解析和序列化,下面以提供TWaver
HTML5拓扑数据为例,演示如何使用Socket.IO:
首先修改上面的server.js文件,加入如下内容,以创建WebSockets服务,并响应获取拓扑数据动作:
//引入Socket.IO模块,如果此处出错,请确认Socket.IO已安装, //而且Socket.IO在环境变量NODE_PATH目录中 var io = require('socket.io'); //创建WebSockets服务 var socket = io.listen(server, { log:false }); //添加监听,相应前台请求 socket.sockets.on('connection', function(client){ //查询数据 client.on('getData', function () { //模拟数据 var result = { nodes: [ { id: 'from', name: 'From', location: { x: 100, y: 100 } }, { id: 'to', name: 'To', location: { x: 200, y: 200 } } ], links: [ { id: 'from-to', name: 'Hello TWaver HTML5', from: 'from', to: 'to' } ] }; //返回数据 client.emit('getData', result); }); });
前台demo.html修改如下,注意不要漏掉引入Socket.IO js库,而且src地址必须为/socket.io/socket.io.js:
<!DOCTYPE html> <html> <head> <title>Node.js Demo</title> <!--引用Socket.IO js库--> <script src="/socket.io/socket.io.js"></script> <script src="./demo.js"></script> </head> <body onload="init()"> <div id="main"> </div> </body> </html>
再在demo目录添加demo.js文件,内容如下:
//定义获取数据消息key var GET_DATA = 'getData'; //WebSockets引用 var socket; function init() { //创建WebSockets socket = io.connect('http://localhost/', { port: 8080 }); //响应getData消息请求 socket.on(GET_DATA, onGetData); //发送getData消息请求 socket.emit(GET_DATA); } //getData消息处理方法 function onGetData(data) { console.log(data); document.getElementById('main').innerHTML = JSON.stringify(data); }
最后重启Node.js,用浏览器重新打开http://localhost:8080/demo.html 即能看到效果:
三. redis
redis
是Node.js的Redis客户端,封装了Redis的指令,使用很简单,基本和Redis客户端命令
一致。这里只用到了hashes
,hashes相关的命令参见这里
。
开始之前,先切换到seraver.js文件所在的目录,启动redis服务(默认数据将保存在当前目录,文件名为dump.rdb)
然后启动redis客户端,运行如下命令,加入测试数据:
hset datas from
"{\"id\":\"from\",\"name\":\"From\",\"location\":{\"x\":100,\"y\":100}}"
hset
datas to
"{\"id\":\"to\",\"name\":\"To\",\"location\":{\"x\":200,\"y\":200}}"
hset
datas from-to "{\"id\":\"from-to\",\"name\":\"Hello TWaver
HTML5\",\"from\":\"from\",\"to\":\"to\"}"
save
exit
然后,修改后台server.js文件,加载redis模块,并创建redis客户连接:
//加载redis模块,创建redis客户端 var redis = require('redis').createClient(); //打印redis出错信息 redis.on('error', function (err) { console.log('Error ' + err); });
再修改模拟数据部分,改为从数据库拿取数据,并将json格式的数据反序列化成js对象:
//添加监听,相应前台请求 socket.sockets.on('connection', function(client){ //响应getData消息 client.on('getData', function () { //查询数据 redis.hvals('datas', function(err, value){ if(value == null || value == ''){ client.emit('getData', null); }else{ //初始化返回结果 var result = {}, nodes = [], links = []; result.nodes = nodes; result.links = links; //解析数据 for(var i=0,data,n=value.length; i<n; i++){ //反序列化json对象 data = JSON.parse(value[i]); //如果存在from属性,则为Link if(data.from){ links.push(data); } //否则为Node else{ nodes.push(data); } } //返回数据 client.emit('getData', result); } }); }); });
最后重启Node.js,用浏览器重新打开http://localhost:8080/demo.html
即能看到和前面一样的效果。
至此一切准备工作完毕,下一篇将介绍如何使用TWaver
HTML5展示这里生成的数据,本文代码见附件
。
发表评论
-
HTML5数据可视化第四弹:交互式地铁线路图
2016-12-13 15:25 984前言 最近特别忙, ... -
HTML5数据可视化第三弹:萌萌哒拓扑图分组
2016-12-02 09:55 2487前言 最近忙着给客户折腾一个复杂的多层嵌套关系。客 ... -
看HTML5如何化解大型复杂网络拓扑图的分组嵌套效果
2015-06-25 14:12 3623忙完3D,最近又开始用HTML5给客户开发网管界面。这次客 ... -
HTML5数据可视化第二弹:打造最美3D机房
2015-06-01 14:25 12784最近项目开发任务告一段落,刚好有时间整理这大半年的一些成果 ... -
HTML5数据可视化第一弹:彩虹爆炸图
2015-05-19 15:23 8031前言 25年过去了,Brooks博士著名的“没有银 ... -
HTML5组织结构图之名片式网元布局
2015-05-07 11:43 2467组织结构图(Organization chart)是企业的 ... -
HTML5流程图之矢量可伸展workflow
2015-05-06 17:17 11461互联网购物成了当今非 ... -
HTML5流程图之复杂关系网
2015-05-06 17:10 2237关系网图的呈现方式多种多样,今天我们给大家分享的是和弦式的 ... -
TWaver GIS制作穹顶之下的雾霾地图
2015-03-18 14:31 758“我不满意,我不想等待,我也不再推诿,我要站出来做一点什么。 ... -
TWaver HTML5之树形布局
2015-03-11 10:53 1429转眼间春节假期已经过完,作为一个职业的程序猿,不知道大家有没 ... -
TWaver 3D应用于大型数据中心(续)
2015-02-04 12:00 960在2014年11月份,我们当时发了一篇有关TWaver HT ... -
TWaver动画之雷达扫描效果
2015-01-26 14:03 1591UI和功能是好的产品的两个重要因素,很多产品往往只注重功能上 ... -
HTML5 实现Link跳线效果
2015-01-15 14:01 1009之前我们推出过Flex版 ... -
在TWaver的Tree节点上画线
2015-01-13 10:27 951论坛上有同学提出如何在tree上画引导线,之前我们Flex已 ... -
22万个木箱!TWaver 3D极限压榨
2014-12-29 11:31 898打开个门户网站都千呼万唤,我们还能期待网页上的3D技术会有 ... -
如何创建TWaver 3D的轮廓选中效果
2014-11-03 10:44 913在一般的游戏中,物体的选中效果会是这样: TWaver 3 ... -
如何创建环型、树型双层布局
2014-09-19 10:58 828TWaver的Demo中有常用的环型布局和树型布局,但是当网 ... -
服务器各项指标的图形化显示
2014-09-11 11:49 694在机房的监控时,经常需要去查看某个机柜中的某一台服务器的各项 ... -
HTML5定制全选列头
2014-09-10 14:57 717随着HTML5产品分支的不断深入使用,HTML5的需求也是越 ... -
TWaver MONO模板库新鲜出炉 精彩纷呈
2014-08-05 11:39 932MONO Design在线3D建模平台网站, www.mon ...
相关推荐
5. **报警系统模拟**:“alarm”可能是一个具体的应用场景,展示如何使用twaver.js来设计和实现报警系统的图形界面,包括节点的状态变化、事件响应等。 6. **交互操作**:学习如何利用twaver.js库实现图形元素的交互...
Twaver学习案例的例子
- "js":JavaScript,这表明TWaver库是用JavaScript语言编写的,适用于Web前端开发。 - "h5":HTML5,说明这个3D图形组件是基于HTML5标准的,具备良好的跨平台性和现代浏览器兼容性。 - "3d":表示3D图形技术,暗示...
TWaver的图形组件库中提供了拓扑组件、地图组件、设备图组件,以及表格、树图、属性表、图表等丰富的通用图形界面组件,为电信运营支撑系统(OSS)的开发提供“一站式”的组件产品和解决方案,是快速设计、开发和...
TWaver是一个高效且灵活的JavaScript库,专门用于构建基于HTML5的可视化应用。它提供了一整套完整的API,帮助开发者轻松创建和操作各种图形元素,包括节点、边、图层以及复杂的图表。TWaver不仅支持静态图表的展示,...
2. **api.js**:这个JavaScript文件可能包含了Twaver 5.9.0的源代码或者API函数的定义,方便开发者查阅和引用。 3. **data.json**:可能存储了关于API的元数据,如类、方法、属性等的描述,用于动态生成文档或提供...
twaver jar在TWaver传统的2D应用中,近一年非常突出地出现了一种需求,那就是希望能够在同一个页面内显示多种层次的网络结构
TWaver是用于创建交互式图表、网络图、流程图、地图等复杂可视化应用的JavaScript库。通过官方文档,我们可以深入理解其功能、用法和性能。 【描述】"达芬奇的密码"这部分可能是对TWaver能力的一种比喻,暗示TWaver...
【基于TWaver实现的3D机房Demo】 在IT行业中,3D可视化技术正在逐步渗透到各个领域,尤其是在数据中心管理方面。TWaver是一款强大的WebGL3D框架,它为开发者提供了一个高效、灵活的工具,用于创建交互式的3D应用...
TWaver HTML5 Developer Guide是关于TWaver HTML5组件套件的官方开发文档,由Serva Software发布。TWaver HTML5是一套基于HTML5的图形组件库,它提供了一整套用于构建网络拓扑图、树形结构、表格和图表等功能丰富的...
TWaver HTML5(以下简称TWaver)使用HTML5技术和javascript语言,可在支持HTML5的浏览器上进行绘图。 使用TWaver前,需熟悉几个基本概念:图元(Element)、容器(DataBox)和画布(Network)。 图元:图形中的...
【标题】"twaver拓扑" 是一个基于HTML5技术的图形化工具,主要用于创建和展示复杂的网络拓扑结构。这个工具提供了丰富的图形类型,能够适应多种应用场景,如IT网络架构、工业控制系统、流程图等。它允许用户通过图形...
6. **src**:源代码目录,其中包含了TWaver库的部分或全部源代码,这对于开发者进行二次开发和学习TWaver的工作原理非常有用。 7. **documents**:可能包含TWaver的用户手册、API文档或其他技术文档,帮助开发者更好...
是twaver学习的最佳资料,大家快来下巴
《TWaver .NET 开发指南+API(英文版)》是专为.NET开发者设计的一份重要参考资料,旨在帮助开发者深入理解和高效使用TWaver组件。TWaver是一个强大的数据可视化工具,尤其适用于创建复杂的图表、网络图以及地理信息...
在这个上下文中,"TWaver" 和 "iTop" 是两个关键工具,用于创建复杂的拓扑图表。 TWaver是一款强大的可视化组件库,专门用于开发交互式的网络和业务拓扑图。它支持Java平台,提供了丰富的图形元素和交互功能,如...
TWaver-flex的库TWaver.swc
TWaver“一站式”UI组件提供包括网络拓扑图、地图、设备面板图、流程图、各种Chart图表、树图、表格等各种通用组件