序言

很早就想用起来websocket,可惜需要后台服务的支持,技术的翻新总会给我带来巨大的冲击,最近后端人员学习了websocket相关后台技术。于是我们开始动起来了。

学习

这位大兄弟的文章  http://www.cnblogs.com/smark/archive/2012/11/26/2789812.html

背景

因为需要做一个进度条功能,表格刷新基本angualr的双向绑定,说到底就是 $watchCollection,脏值检测来驱动渲染。所以之前加载方法就是定时改变数据源来实现。

结果表格性能比较差,尤其数据多的时候。长连接针对这种数据整盘推送的模式也很无力,于是websocket登场了。

项目实践

            if(("WebSocket" in window)){
ws = new WebSocket('ws://'+$location.host()+':'+$location.port()+'/websocket');
ws.onopen = function(){
var param = {
"type":"app",
"namespace":params.namespace,
"name":params.name
};
ws.send(angular.toJson(param));
};
ws.onmessage = function(result){
var apps = angular.fromJson(result.data).apps;
if(!$scope.servicesTable.dataset||$scope.servicesTable.dataset.length != apps.length){
//更新整个表格数据
$scope.servicesTable.dataset = apps;
//重新绘制topo图
drawNodes(apps);
}
else{
for(var i=0;i<$scope.servicesTable.dataset.length;i++){
$scope.servicesTable.dataset[i].metadata.availablereplicas = apps[i].metadata.availablereplicas;
$scope.servicesTable.dataset[i].metadata.desiredreplicas = apps[i].metadata.desiredreplicas;
}
}
$scope.services=services;
console.log(services)
//脏值检测
$scope.$apply();
};
ws.onclose = function(evt){
$mdToast.show($mdToast.simple().textContent('webSocket已经被关闭 !').position('top right').theme('md-accent'));
}; }
else{
$mdToast.show($mdToast.simple().textContent('当前浏览器不支持webSocket !').position('top right').theme('md-accent'));
}

效果

实现的效果自我感觉比较完美,实现了点对点监控,虽然数据还是全盘推送。但是只更新影响进度条的数据,没有出现整个表格刷新的局面,表格能够完成实时渲染。

注意点

①交互为字符串形式交互,需要javascript对象和json对象切换

②心跳未加,有需要再优化

websocket 项目应用的更多相关文章

  1. websocket项目电子签字使用场景

    场景描述:进入页面时,如果设置强制签字,发送签字webSocket连接,同时页面有个重新签字按钮,这个按钮会多次调用 第一步:先建立一个websocket的js文件,名叫signSocket.js内容 ...

  2. 我带着小程序和Springboot后端终于战胜了WebSocket!!!胜利( •̀ ω •́ )y

    WebSocket项目笔记 1. What is WebSocket? (以下内容来源于百度百科) WebSocket是一种在单个TCP连接上进行全双工通信的协议 WebSocket使得客户端和服务器 ...

  3. php websocket

    php websocket项目开发,推荐使用:Workerman 本片内容使用Workerman实现了简单的及时聊天功能,具体代码如下: <?php // phpinfo(); header(' ...

  4. (转)WebSocket学习

    石墨文档:https://shimo.im/docs/3UkyOPJvmj4f9EAP/ (二期)17.即时通讯技术websocket [课程17]java We...实现.xmind0.1MB [课 ...

  5. 微信小程序之WebSocket

    本文版权归 OSChina jsongo0 所有,转载请标明出处,以示尊重! 原文:https://my.oschina.net/jsongo/blog/757871 为什么需要websocket?传 ...

  6. WebSocket使用中Stomp Client连接报ERROR CODE 200的解决办法

    [转] https://www.cnblogs.com/chrischeng/p/10237523.html 最近在做一个WebSocket项目,后台使用了Stomp协议的WebSocketConfi ...

  7. 快速上手微信小程序webSocket

    WebSocket是一种在单个TCP连接上进行全双工通信的协议.WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范.WebSocket API也被W3 ...

  8. 用 Go + WebSocket 快速实现一个 chat 服务

    前言 在 go-zero 开源之后,非常多的用户询问是否可以支持以及什么时候支持 websocket,终于在 v1.1.6 里面我们从框架层面让 websocket 的支持落地了,下面我们就以 cha ...

  9. 【Flask】 利用uWSGI和Nginx发布Flask应用

    因为Flask比较容易上手,之前也拿flask写过几个小项目,不过当时天真地以为只要在服务器上nohup跑一个python脚本就算是成功发布了这个flask项目.实际上这还面临很多问题,比如并发性不好 ...

随机推荐

  1. 在windows搭建react-native android 开发环境总结

    1.安装必须的软件 1.Python 2    注意勾选 Add python.exe to Path,选项,这样就可以在安装完成后,不用手动去添加环境变量    安装完,打开cmd.exe,输入py ...

  2. C# 6 与 .NET Core 1.0 高级编程 - 40 ASP.NET Core(上)

    译文,个人原创,转载请注明出处(C# 6 与 .NET Core 1.0 高级编程 - 40 章  ASP.NET Core(上)),不对的地方欢迎指出与交流. 章节出自<Professiona ...

  3. 1.1XAF框架开发视频教程-简单的订单管理实现过程,视频,提纲,及教程源码

    下面是视频教程的提纲: PPT版本的提纲下载 本节源码下载 XAF框架开发教程 快速实现企业级信息系统开发的利器 XAF简介 ´  开发公司:www.devexpress.com,老牌控件公司 ´  ...

  4. 用qemu搭建aarch64学习环境

    作者信息 作者: 彭东林 邮箱: pengdonglin137@163.com QQ: 405728433 软件平台 主机: Ubuntu14.04 64位版本 模拟器:Qemu-2.8.0 Linu ...

  5. WP8.1开发中找程序下的Assets文件夹

    这俩天在开发另一个程序时,遇到一个小问题:如何调用程序下的Assets文件夹及其下的文件和文件夹: 在网上找了两天,基本上是关于如何调用手机中库的方法,没找到有关介绍如何调用查找 编译前添加图片或其它 ...

  6. WPF 多语言解决方案 - Multilingual App Toolkit

    1.首先安装Multilingual App Toolkit   2.新建项目,在VS中点击"工具" -> "Multilingual App Toolkit&qu ...

  7. Python字典详解

    转载请注明出处 Python字典(dict)是一个很常用的复合类型,其它常用符合类型有:数组(array).元组(touple)和集合(set).字典是一个key/value的集合,key可以是任意可 ...

  8. Python入门教程(2)

    人生苦短,我玩蛇0.0! Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991 ...

  9. C#自动弹出窗口并定时自动关闭

    最近做个小项目,用到一个小功能:后台线程定时查询数据库,不符合条件的记录弹出消息提醒(在窗口最前面),并且过几秒钟再自动关闭弹出的窗口. 所以从网上找来资料,如下: WinForm 下实现一个自动关闭 ...

  10. Robot Framework中经常用的第三方库的安装方法

    pip升级:python -m pip install --upgrade pip 一.安装robotframework-selenium2library,相当于python中的selenium    ...