8.websocket学习(2)

前端代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>websocket示例</title>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
     <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
     <script src="https://unpkg.com/element-ui/lib/index.js"></script>


        <style type="text/css">
            .alert_demo{
                width: 150px;
                height: 150px;
                border:1px solid red;
                position: absolute;
                right: 0;
                bottom: 0;
            }
        </style>
    </head>
    <body>
        <div id="app">
            <h3>消息显示</h3>
            <ul>
                <li v-for="(message, index) in messages" :key="index">
                    {{message}}
                </li>
            </ul>
            <hr>
            <h3>发送消息 </h3>
            <input type="text" v-model="sendMsg" />
            <button type="button" @click="send">发送</button>
             <el-alert v-if="isShow" :title="messages" type="success" description="接收到websocket数据,弹出此弹框" show-icon></el-alert>
             
             <div class="alert_demo">
                 {{messages}}
             </div>
        </div>
        <script type="text/javascript">
            var socket;
            var app = new Vue({
                el: '#app',
                data: {
                    messages: [],
                    sendMsg: '',
                    isShow:false
                },
                created: function() {
                    // var _this = this;
                    //创建WebSocket对象,指定要连接的服务器地址和端口,建立连接
                    socket = new WebSocket("ws://172.20.10.6:8080/websocket");
                    //打开连接
                    socket.onopen = function() {
                        console.log("Socket已打开");

                    };
                    //获得服务端推送的消息
                    socket.onmessage = (msg)=> {
                        console.log(msg.data);
                        this.messages.push(msg.data);
                        console.log(this.messages);
                        this.isShow = true
                        setTimeout(()=>{
                            this.isShow = false
                        },3000)
                        
                        this.$message({
                            type:'success',
                            message:msg.data
                            
                        })
                    };
                    //关闭连接
                    socket.onclose = function() {
                        console.log("Socket已关闭");
                    };
                    //发送错误
                    socket.onerror = function() {
                        alert("Socket发生了错误");
                    }
                },
                watch: {
                    // 如果 `messages` 发生改变,这个函数就会运行
                    messages: function(newMsg, oldMsg) {
                        this.messages = newMsg;
                    },
                },
                methods: {
                    send: function() {
                        socket.send(this.sendMsg);
                    }
                }
            })
        </script>
    </body>
</html>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 随着web前端的飞速发展,学习web前端的人员也是越来越多,在移动 互联网 时代,相信我们每个人的手机上都装有数十...
    web前端05阅读 2,265评论 6 35
  • 正则 正则 地址JS正则表达式元字符 http://segmentfault.com/a/119000000247...
    飞菲fly阅读 1,143评论 0 5
  • 很喜欢《牧羊少年奇幻之旅》,书中许多话都富有哲理,但又不像哲理书那样难懂。读一下就能明白其中的意思,引起很多感想。...
    米多桥阅读 619评论 0 1
  • 孟子的孟,玉中之王的珏,你是孟珏。 妖冶的明眸,飘逸的青丝,月白的长衫,温暖的笑容。你用十年的时间,让...
    青梅为聘阅读 489评论 0 1
  • 原因:存在HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。 要求: (1)having子句中的...
    寓含阅读 1,083评论 0 0