WebSocket的JavaScript Demo解析

本文通过一个JavaScript例子,解析如何使用WebSocket,代码如下:

<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="content-type" content="text/html" />
    <meta name="author" content="https://www.baidu.com" />
    <title>websocket test</title>
    <script>
        var socket;
        function Connect(){
            try{
                socket=new WebSocket(‘ws://127.0.0.1:9000‘);
            }catch(e){
                alert(‘error‘);
                return;
            }
            socket.onopen = sOpen;
            socket.onerror = sError;
            socket.onmessage= sMessage;
            socket.onclose= sClose;
        }
        function sOpen(){
            alert(‘connect success!‘);
        }
        function sError(e){
            alert("error " + e);
        }
        function sMessage(msg){
            alert(‘server says:‘ + msg);
        }
        function sClose(e){
            alert("connect closed:" + e.code);
        }
        function Send(){
            socket.send(document.getElementById("msg").value);
        }
        function Close(){
            socket.close();
        }
    </script>
</head>  

<body>
<input id="msg" type="text">
<button id="connect" onclick="Connect();">Connect</button>
<button id="send" onclick="Send();">Send</button>
<button id="close" onclick="Close();">Close</button>

</body>  

</html>  

主要代码解读:

申请一个WebSocket对象,参数是需要连接的服务器端的地址,同http协议使用http://开头一样,WebSocket协议的URL使用ws://开头,另外安全的WebSocket协议使用wss://开头。。

var wsUri ="ws://127.0.0.1:9000/";
websocket = new WebSocket(wsUri);

WebSocket对象一共支持四个消息 onopen, onmessage, onclose和onerror,

我们可以看出所有的操作都是采用消息的方式触发的,这样就不会阻塞UI,使得UI有更快的响应时间,得到更好的用户体验。

当Browser和WebSocketServer连接成功后,会触发onopen消息;

websocket.onopen = function(evt) {
};

如果连接失败,发送、接收数据失败或者处理数据出现错误,browser会触发onerror消息;

websocket.onerror = function(evt) {
};

当Browser接收到WebSocketServer发送过来的数据时,就会触发onmessage消息,参数evt中包含server传输过来的数据;

websocket.onmessage = function(evt) {
};

当Browser接收到WebSocketServer端发送的关闭连接请求时,就会触发onclose消息。

websocket.onclose = function(evt) {
};

WebSocket与TCP、HTTP的关系WebSocket与http协议一样都是基于TCP的,所以他们都是可靠的协议,Web开发者调用的WebSocket的send函数在browser的实现中最终都是通过TCP的系统接口进行传输的。

时间: 2024-10-09 21:49:16

WebSocket的JavaScript Demo解析的相关文章

轻松搞定javascript预解析机制(搞定后,一切有关变态面试题都是浮云~~)

hey,guys!我们一起总结一下JS预解析吧! 首先,我们得搞清楚JS预解析和JS逐行执行的关系.其实它们两并不冲突,一个例子轻松理解它们的关系: 你去酒店吃饭,吃饭前你得看下菜谱,点下菜(JS预解析),但吃的时候还是一口一口的吃(JS逐行执行)! OK,解决下面五个问题,JS预解析就算过了~~(前提:对JS变量作用域有清晰理解) 一.JS预解析是什么? 其实就是对程序要用到的材料(变量,函数)给一个初始值,并存到一个表中(我自己虚构的),当程序运行到那一行时,就来这个表看有没有初始值,没有就

phantomjs介绍-(js网页截屏、javascript网页解析渲染工具)

phantomjs介绍-(js网页截屏.javascript网页解析渲染工具) phantomjs 是一个基于js的webkit内核无头浏览器 也就是没有显示界面的浏览器,这样访问网页就省去了浏览器的界面绘制所消耗的系统资源,比较适合用于网络测试等应用 .利用这个工具,我们可以轻松的搭建一个接口用于获取我们想要的url的整页截屏. PhantomJS is a headless WebKit with JavaScript API. It has fast and native support

javascript的解析顺序和变量作用域

一.变量的作用域 1.全局变量 在代码中任何地方都能够访问得到的变量,拥有全局的作用域. A.最外层函数外面定义的变量. B.没有定义直接赋值的变量,拥有全局属性. 2.局部变量 只能在固定的代码片段(函数片段中)中访问得到. A.函数内部定义的变量,就是局部变量. B.参数也是局部变量. 二.javascript预解析顺序 一.<Script></script>块依次解析. 二.解析代码运行的环境. 三.对标识符(关键字)(var function )进行解析,解析到相应的环境下

javascript如何解析json对javascript如何解析json对象并动态赋值到select列表象并动态赋值到select列表

原文 javascript如何解析json对象并动态赋值到select列表 JSON(JavaScriptObject Notation)一种简单的数据格式,比xml更轻巧.JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的API或工具包. JSON的规则很简单:对象是一个无序的“‘名称/值’对”集合.一个对象以“{”(左括号)开始,“}”(右括号)结束.每个“名称”后跟一个“:”(冒号):“‘名称/值’对”之间使用“,”(逗号)分隔. 在开

Javascript URI 解析介绍

URI 在维基百科中对于URI的解释是这样子的: 在计算机术语中,统一资源标识符(Uniform Resource Identifier,或URI)是一个用于标识某一互联网资源名称的字符串. 该种标识允许用户对网络中(一般指万维网)的资源通过特定的协议进行交互操作.URI由包括确定语法和相关协议的方案所定义. 引自网络上对于URI组成的解释,而这些可以在稍后对于URI的解析中看出来. URI一般由三部分组成: 1.访问资源的命名机制. 2.存放资源的主机名. 3.资源自身的名称,由路径表示. 或

Element demo解析

Element demo解析

JavaScript 预解析

通过<JavaScript权威指南>及网上相关资料了解到,JavaScript有“预解析”行为.理解这一特性是很重要的,不然在实际开发中你可能会遇到很多无从解析的问题,甚至导致程序bug的存在.为了解析这一现象,也作为自己的一次学习总结,本文逐步引导你来认识JavaScript“预解析”,如果我的见解有误,还望指正. (1)如果JavaScript仅是运行时自上往下逐句解析的,下面的代码能正确运行是可以理解的,因为我们先定义函数,然后才调用它. 复制代码代码如下: function showM

ArcGIS javascript demo

Description This sample uses a geoprocessing task that takes an input SQLQuery string and filters 911 calls to display only calls that match the query. The task also performs hotspot analysis on the query results and generates a hotspot raster. The q

如何在QML应用中使用Javascript来解析XML

我们知道有很多的web services是使用XML格式的,我们可以通过使用XmlListModel来解析我们的XML.但是在有些情况下,我们可能需要使用Javascript来解析XML,这样使得我们可以更加灵活地解析我们所需要的XML数据.比如,通过一个请求,我们可以来解析XML结果中的多个数据.比较而言,XmlListModel只能对XPath路经下(由source属性定义)的数据进行解析.如果需要多个路径,可以通过多次对不同的路径进行查询.当然,我们可能需要一些方法来同步这些查询(如果最终