zoukankan      html  css  js  c++  java
  • Vue2、websocket 与node.js接口 本地测试

    Vue2、websocket 与node.js接口 本地测试

    1.  安装vue-native-websocket模块
    2.  yarn add vue-native-websocket 
    或者用 
    npm install vue-native-websocket --save
     

    3. 在main.js中引入websocket

    import websocket from 'vue-native-websocket'

    Vue.prototype.$websocket = websocket

    Vue.use(websocket, 'ws://localhost:3000', {

      reconnection: true, // (Boolean) whether to reconnect automatically (false)

      reconnectionAttempts: 5, // (Number) number of reconnection attempts before giving up (Infinity),

      reconnectionDelay: 3000, // (Number) how long to initially wait before attempting a new (1000)

    })

     

     

    项目中main.js使用如下图

     

    4.在项目中新建websocket.vue文件,在HelloWorld.vue中引入

     

    5. HelloWorld.vue文件代码如下

    <template>

      <div class="hello">

       <websocket/>

      </div>

    </template>

     

    <script>

    import websocket from "@/components/websocket"

    export default {

      name: 'HelloWorld',

      components:{

        websocket

      },

      data () {

        return {

        

        }

      },

    </script>

     

    <!-- Add "scoped" attribute to limit CSS to this component only -->

    <style scoped>

     

    </style>

     

    6.websocket.vue代码如下

    <template>

        <div>

            {{msg}}

        </div>

    </template>

     

    <script>

        export default {

            name:"websocket",

            data() {

                return {

                    websock: null,

                    msg:""

                }

            },

     

        created(){

               //页面刚进入时开启长连接

                this.initWebSocket()

           },

        destroyed: function() {

        //页面销毁时关闭长连接

          this.websocketclose();

     

        },

     

        methods: {

     

          initWebSocket(){ //初始化weosocket

           

            const wsuri = 'ws://localhost:3000';//ws地址

     

            this.$websocket = new WebSocket(wsuri);

     

            this.$websocket.onopen = this.websocketonopen;

     

            this.$websocket.onerror = this.websocketonerror;

     

            this.$websocket.onmessage = this.websocketonmessage;

     

            this.$websocket.onclose = this.websocketclose;

           },

     

          websocketonopen() {

            console.log("WebSocket连接成功");

          },

     

          websocketonerror(e) { //错误

            console.log("WebSocket连接发生错误");

          },

     

          websocketonmessage(e){ //数据接收

            console.log(e);

    this.msg=e.data

          },

     

          websocketsend(agentData){//数据发送

            this.$websocket.send(agentData);

          },

     

          websocketclose(e){ //关闭

            console.log("connection closed (" + e.code + ")");

         },

       },

      }

     </script>

    7.创建一个新的项目,新建1.js文件,用于写node.js接口,安装

    nodejs-websocket模块npm install websocket

    用cmd或者git bash进入后台接口文件,1.js,然后命令行输入node 1.js,启动后台服务。文件如下:

    var WebSocketServer = require('websocket').server;

    var http = require('http');

     

    var server = http.createServer(function(request, response) {

        console.log((new Date()) + ' Received request for ' + request.url);

        response.writeHead(404);

        response.end();

    });

    server.listen(3000, function() {

        console.log((new Date()) + ' Server is listening on port 3000');

    });

     

    wsServer = new WebSocketServer({

        httpServer: server,

     

    });

     

     

    wsServer.on('request', function(request) {

        //当前的连接

        var connection = request.accept(null, request.origin);

     

        setInterval(function(){

            connection.sendUTF('服务端发送消息' + (Math.random().toFixed(2)))

        },500)

     

        console.log((new Date()) + '已经建立连接');

        connection.on('message', function(message) {

            if (message.type === 'utf8') {

                console.log('Received Message: ' + message.utf8Data);

                connection.sendUTF(message.utf8Data);

            }

            else if (message.type === 'binary') {

                console.log('Received Binary Message of ' + message.binaryData.length + ' bytes');

                connection.sendBytes(message.binaryData);

            }

        });

        connection.on('close', function(reasonCode, description) {

            console.log((new Date()) + ' Peer ' + connection.remoteAddress + '断开连接');

        });

    });                                          

    8. Vue2、websocket 与node.js接口 本地测试到这里就结束了,以上代码用到Websocketd的方法详见websocket文档

  • 相关阅读:
    PHP下载/采集远程图片到本地
    【问底】徐汉彬:PHP7和HHVM的性能之争
    IntelliJ IDEA 14.x 创建工作空间与多个Java Web项目
    IntelliJ IDEA 14.x 与 Tomcat 集成,创建并运行Java Web项目
    启动MongoDB时,提示:error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
    IntelliJ IDEA 14.x 的 project 和 module 是啥关系?
    Intellij IDEA 14.x 菜单项中Compile、Make和Build的区别
    Github上的PHP资源汇总大全
    Intellij IDEA 14.x 中的Facets和Artifacts的区别
    Spring技术内幕:Spring AOP的实现原理(二)
  • 原文地址:https://www.cnblogs.com/volodya/p/10195298.html
Copyright © 2011-2022 走看看