<template>
    <div>
        webstocket
        <div>
            webstocket
            webstocket
            webstocket
        </div>
    </div>
</template>

<script>
// 这里可以导入其他文件（比如：组件，工具js，第三方插件js，json文件，图片文件等等）
// 例如：import 《组件名称》 from '《组件路径》';
export default {
    name: 'webs',
    //import引入的组件需要注入到对象中才能使用
    components: {},
    props: {},
    data () {
        // 这里存放数据
        return {};
    },
    // 方法集合
    methods: {
        init() {
            if(typeof(WebSocket) === "undefined"){
                alert("您的浏览器不支持socket")
            }else{
                // 实例化socket
                this.websocket = new WebSocket(`ws://192.168.1.54:8077/webServer/abc`)
                this.initWebSocket();
                console.log(this.websocket)
            }
        },
        initWebSocket() {
            //连接错误
            this.websocket.onerror = this.setErrorMessage;

            // //连接成功
            this.websocket.onopen = this.setOnopenMessage;


            //收到消息的回调
            this.websocket.onmessage = this.setOnmessageMessage;
            console.log('连接成功2222',this.websocket.onmessage)


            //连接关闭的回调
            this.websocket.onclose = this.setOncloseMessage;

            //监听窗口关闭事件，当窗口关闭时，主动去关闭websocket连接，防止连接还没断开就关闭窗口，server端会抛异常。
            window.onbeforeunload = this.onbeforeunload;
        },
        setErrorMessage() {
            this.data = 'WebSocket连接发生错误' + '   状态码：' + this.websocket.readyState;
        },
        setOnopenMessage() {
            this.data = 'WebSocket连接成功' + '   状态码：' + this.websocket.readyState;
        },
        setOnmessageMessage(event) {
            this.data = '服务端返回：' + event.data;
            console.log(event.data);
            // this.logData.push(event.data);
            // this.$refs['elscroll'].wrap.scrollTop = this.$refs['elscroll'].wrap.scrollHeight;
        },
        setOncloseMessage() {
            this.data = 'WebSocket连接关闭' + '   状态码：' + this.websocket.readyState;
        },
        onbeforeunload() {
            this.closeWebSocket();
        },
        //websocket发送消息
        send() {
            this.messages = {
                token:this.token,
                text:this.text,
            }

            this.websocket.send(this.text);
            // this.websocket.send(this.messages);
            this.text = '';
            // this.messages = {};
        },
        closeWebSocket() {
            console.log(this.websocket)
            this.websocket.close();
        },
    },
    // 监听属性 类似于data概念
    computed: {},
    // 监控data中的数据变化
    watch: {},
    //生命周期 - 创建完成（可以访问当前this实例）
    created () {
        this.init();
    },
    // 生命周期 - 挂载完成（可以访问DOM元素）
    mounted () {
        this.init();
    },
    // 生命周期 - 创建之前
    beforeCreate () {},
    // 生命周期 - 挂载之前
    beforeMount () {},
    // 生命周期 - 更新之前
    beforeUpdate () {},
    // 生命周期 - 更新之后
    updated () {},
    // 生命周期 - 销毁之前
    beforeDestroy () {},
    // 生命周期 - 销毁完成
    destroyed () {},
    // 如果页面有keep-alive缓存功能，这个函数会触发
    activated () {},
}
</script>

<style scoped>

</style>