美文网首页
HTML5 WebSocket 路径中传递参数

HTML5 WebSocket 路径中传递参数

作者: 树上花开 | 来源:发表于2020-07-21 14:01 被阅读0次

一、 HTML5 WebSocket

WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。

WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

现在,很多网站为了实现推送技术,所用的技术都是 Ajax 轮询。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然而HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。

二 、实现websocket通讯

客户端代码:

```

<!DOCTYPE html>

<html>

<head>

    <meta charset="utf-8" />

    <title>我猜猜</title>

    <link rel="stylesheet" href="http://g.tbcdn.cn/??tb/global/3.2.1/global-min.css,tb/tb-fp/14.7.6/index-e-min.css?t=20141016">

    <script src="http://g.tbcdn.cn/kissy/k/1.4.0/seed-min.js?t=20141016"></script>

    <link rel="stylesheet" href="guess.css"/>

</head>

<body>

<h2 class="header">我猜猜</h2>

<div class="clearfix">

    <section class="mycanvas">

        <h3>画板</h3>

    </section>

</div>

<section class="foot clearfix">

    <div class="btns">

        <!--<label for="">请输入用户名:</label>-->

        <!--<input type="text" id="J_User" value=""/>-->

        <label for="">请输入成语:</label>

        <input type="text" id="J_Word" value=""/>

        <button type="submit" class="next" id="J_Submit">提交</button>

    </div>

    <div class="info" id="J_Message">

        <!--<div class="info-item">msg</div>-->

    </div>

</section>

<script>

    KISSY.use('core',function(S){

        var $ = S.all;

        var btnSubmit = $('#J_Submit'),

            txtWord = $('#J_Word'),

            divMsg = $('#J_Message'),

            //txtUser = $('#J_User'),

            tpl = '<div class="info-item">#msg#</div>';

        var ws = createWs();

        var ident = false;

        btnSubmit.on('click',function(){

            var word = txtWord.val();

            //var user = txtUser.val();

            if(ws){

                if(ident){

                    ws.send(word);

                }

            }

        })

        function createWs(){

            var ws = null;

            if(window.WebSocket){

var url = 'ws://127.0.0.1:5000/index?token=xxxxxx';

                //ws = new WebSocket('wss://127.0.0.1:5000');

ws = new WebSocket(url);

                ws.onopen = function(e){

                    html = tpl.replace(/#msg#/g, "已连接到服务器");

                    divMsg.append(html);

                    ident = true;

                }

                ws.onclose = function(e){

                    html = tpl.replace(/#msg#/g, "服务器关闭");

                    divMsg.append(html);

                }

                ws.onerror = function(){

                    html = tpl.replace(/#msg#/g, "连接出错");

                    divMsg.append(html);

                }

                ws.onmessage = function(e){

                    console.log(e.data);

                    html = tpl.replace(/#msg#/g, e.data);

                    divMsg.append(html);

                }

            }

            return ws;

        }

    })

</script>

</body>

</html>

   ```

参考:https://www.runoob.com/html/html5-websocket.html

相关文章

网友评论

      本文标题:HTML5 WebSocket 路径中传递参数

      本文链接:https://www.haomeiwen.com/subject/akdikktx.html