美文网首页
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