WebSocket最简易理解,term.js插件的使用

介绍WebSocket

  WebSocket我想大家并不陌生,无论你的的工作中是否用到了它,都或多或少听说过,它是h5中新增的,在某些方面可以很好的替代我们一直沿用的ajax技术,甚至更加的出色。但是它究竟和http有什么区别呢。举个最简单的例子吧,我现在需要根据用户不同的输入来获取后端不同的数据,http请求的方式就是每次用户输入我就发送一个http请求。然而websocket的解决是一次连接成功后,每次用户输入都会发送给后台,但是这个发送的数据却是一直处在已经连接的状态,并不是每次想http每一次都是一次新的连接。

  现很多网站为了实现即时通讯,所用的技术都是轮询(polling)。轮询是在特定的的时间间隔(time interval)(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客服端的浏览器。这种传统的HTTP request 的模式带来很明显的缺点 – 浏览器需要不断的向服务器发出请求(request),然而HTTP request 的header是非常长的,里面包含的数据可能只是一个很小的值,这样会占用很多的带宽。并且假设我现在需要命令行的格式不断地发送给后台,后台需要不断的把数据发送到我的电脑,使用传统的http就显得很头疼。于是websocket应运而生,使得即使通讯也变的简单起来。

             传统http请求                                                                                                                        websocket请求

                                              

WebSocket使用

      /*只有支持websocket的浏览器才能运行*/
        var wsUrl = "ws://192.168.13.21:33333/v1.0/plugins/api/ftp/tree";//必须以ws开头

        var websocket = new WebSocket(wsUrl);//new出一个 websocket 实例

        websocket.onopen = function(){//打开连接websocket
            websocket.send("connect");//发送你需要的数据

            websocket.onmessage = function(evt) {//接受返回的数据
                console.log(‘success‘,evt)
            }

            //失败的监控
            websocket.onerror = function(evt) {//连接失败或者返回失败处理
                console.log(‘error‘,evt)
            }
        };

        // 关闭Socket....
        //socket.close() 

以上就是websocket简单的使用,但是真正的工作中用到最多的还是即时的连接,于是配合term.js这个插件可以实现前端命令行的形式向后端发送数据,然后将接收到的数据显示在屏幕上。

WebSocket结合term.js

我们先看我们的html文件:

 <div id="container-terminal"></div>//插件即将出现模拟屏幕的地方

<style type="text/css">
    #container-terminal{
        width:100%;
    }
</style>
<script type="text/javascript" src="ui_assets/js/terminal/term.js"></script>//引入插件js文件

在看我们的js文件:

 var term;  
  var wsUrl = "ws://192.168.13.21:33333/v1.0/plugins/api/ftp/tree"
  websocket = new WebSocket(wsUrl);//new 一个websocket实例
  websocket.onopen = function(evt) {//打开连接websocket
    term = new Terminal({  //new 一个terminal实例,就是数据展示的屏幕和一些见简单设置,包括屏幕的宽度,高度,光标是否闪烁等等
        cols: 200,
        rows: 80,
        screenKeys: true,
        useStyle: true,
        cursorBlink: true,
    });

  /*term实时监控输入的数据,并且websocket把实时数据发送给后台*/
    term.on(‘data‘, function(data) {//term.on方法就是实时监控输入的字段,
        websocket.send(data);//websocket发送给后台
    });
    term.on(‘title‘, function(title) {
        //document.title = title;
    });
    term.open(document.getElementById(‘container-terminal‘));//屏幕将要在哪里展示,就是屏幕展示的地方
    websocket.onmessage = function(evt) {//接受到数据
        term.write(evt.data);//把接收的数据写到这个插件的屏幕上
    }
    websocket.onclose = function(evt) {//websocket关闭
        term.write("Session terminated");
        term.destroy();//屏幕关闭
    }
    websocket.onerror = function(evt) {//失败额处理
        if (typeof console.log == "function") {
            console.log(evt)
        }
    }
 }

  var close = function() {//关闭websocket
    websocket.close();
  };

现在我们可以看看我们的效果,值得注意的是你要将你的websocket地址改成有效的地址:

到此为止,简单的websocket用法也就讲完了,也可以完全的使用到你的工作之中。

时间: 2024-10-10 18:45:58

WebSocket最简易理解,term.js插件的使用的相关文章

前端js插件

jquery jquery官方 版本:v 2.1.0v 1.11.0 yquery 暂停更新 版本: v 1.6v 1.5 v 1.4v 1.3 v 1.2v 1.1 v 1.0 jQuery 原型插件(jquery-*) jquery-drag 版本: latestv 1.1 v 1.0 jquery-dialog 版本: latestv 1.5 v 1.4v 1.3 v 1.2v 1.1 v 1.0 样式:default jquery-scrollable 版本: latestv 1.0 j

学会读JQuery等JS插件源码

很多人觉得jquery.ext等一些开源js源代码 十分的晦涩,读不懂,遇到问题需要调试也很费劲.其实我个人感觉主要是有几个方面的原因: 1.对一些js不常用的语法.操作符不熟悉 2.某个function中又嵌套了一些内部的function,使得整个代码的层次结构不像java代码那么清晰. 3.js中允许变量先使用后定义,会造成我们看代码时候忽然冒出来一个变量.function,却找不到是在哪里定义的. 那么今天给大家分享一下我的经验,扫清你的障碍. 一.一些晦涩的操作符: 1.(functio

表单验证的validate.js插件---jQuery Validation Plugin

早上在公交车上看了一个关于慕课网的教程<表单验证的validate.js插件---jQuery Validation Plugin>,正好可以用到自己近期开发简易微博的注册页面和登录页面,插件全名叫jquery.validate.js,在引入jquery.validate.js之前要先将jquery.js引入.这个插件主要用于表单的验证,用户在注册和登录时体验十分不错!由于自己只了解关于validate的皮毛,只会简单的应用rule规则和message自定义提示,事实上,validate还有其

jquery.autocomplete.js 插件的自定义搜索规则

这二天开始用jquery.autocomplete这个自动完成插件.功能基本比较强大,但自己在实际需求中发现还是有一处不足!问题是这样:当我定义了一个本地数据JS文件时,格式为JSON式的数组.如下: var stockInfoJson = [ { name: "深发展A", code: "000001",spell:"sfza" }, { name: "万科A", code: "000002",spell

AmazeUI(妹子UI)中CSS组件、JS插件、Web组件的区别

AmazeUI(妹子UI)是非常优秀的国产前端UI,现在来介绍一下AmazeUI中CSS组件.JS插件与Web组件的区别. CSS组件顾名思义就是仅使用CSS渲染而成的组件,而JS插件也很容易理解,就是由CSS渲染和JS来控制行为的组件.比较不好理解就是Web组件,好像跟JS插件意思差不多,都是CSS和JS组成的.它们到底区别在哪?我们重点来讲这个.我们通过学习如何调用Web组件(其中的手风琴组件)来一步一步了解其与JS插件的区别. 示例01.Web组件-直接使用 (请下载附件查看示例) 示例中

javascript基础修炼(12)——手把手教你造一个简易的require.js

目录 一. 概述 二. require.js 2.1 基本用法 2.2 细说API设计 三. 造轮子 3.1 模块加载执行的步骤 3.2 代码框架 3.3 关键函数的代码实现 示例代码托管在我的代码仓:http://www.github.com/dashnowords/blogs 博客园地址:<大史住在大前端>原创博文目录 华为云社区地址:[你要的前端打怪升级指南] 一. 概述 许多前端工程师沉浸在使用脚手架工具的快感中,认为require.js这种前端模块化的库已经过气了,的确如果只从使用场

swiper的使用方法,以及各种JS插件的使用通用技巧

任何一个JS插件,都可以看做是一个组件. 组件包含三种东西:HTML布局,CSS样式表,JS代码. 组件使用的时候:要也是要注意三个东西 一.html布局. 通过HTML结构分析,来快速的了解,插件的html布局. 1.HTML一般只有两种结构,父子结构,兄弟结构. 2.分析层数,分析出最精简的结构,看看层数,父子结构,就看成是2层 二.css样式表 这个一般不需要分析. 三.JS使用 第三方组件,比如swiper,都是使用对象作为参数进行配置. 对象是对象,参数是参数.对象本质,参数是用途.

Eclipse安装Propedit插件、SVN插件、js插件

1.在线安装Propedit 打开Eclipse的在线安装界面,点击Add Name: propedit Location:http://propedit.sourceforge.jp/eclipse/updates/ 2.在线安装Subclipse Name: subclipse 1.6.x Location:http://subclipse.tigris.org/update_1.6.x 安装完成即可使用. 3.安装包安装 下载spket-1.6.23,解开压缩包以后,把最里面的featur

方便大家学习的Node.js教程(一):理解Node.js

理解Node.js 为了理解Node.js是如何工作的,首先你需要理解一些使得Javascript适用于服务器端开发的关键特性.Javascript是一门简单而又灵活的语言,这种灵活性让它能够经受住时间的考验.函数.闭包等特性使Javascript成为一门适合Web开发的理想语言. 有一种偏见认为Javascript是不可靠的,然而事实并非如此.人们对Javascript的偏见来源于DOM,DOM是浏览器厂商提供的用于Javascript与浏览器交互的API,不同浏览器厂商实现的DOM存在差异.