zoukankan      html  css  js  c++  java
  • node及socket.io实现简易websocket双向通信

    技术栈: vue2.0 + node + websocket( socket.io )

    1. 安装依赖

    初始化vue项目后输入下方指令安装依赖包

    // 推荐cnpm安装
    npm i vue-socket.io -S  // for 客户端
    npm i socket.io -S  // for 服务端node

    2. 新建服务端目录如下图  server / app.js 

     

    //  app.js
    var app = require('http').createServer();
    var io = require('socket.io')(app);
    var PORT = 8081;
    
    app.listen(PORT);
    /*
        *新手必读
        *function中的socket为每个客户端单独连接的socket实例,只通知当前连接用户
        *io.sockets 通知所有连接用户
        *socket.broadcast 给除了自己以外的客户端广播消息
    */
    io.on('connection', function (socket) {
        for(let i=0; i<100; i++){
            setTimeout(()=>{
                io.sockets.emit('progress',i);
                console.log("当前进度为",i+1);
            },300*i)
        }
    })
    
    console.log('app listen at:'+PORT);

    一般而言,运行node程序只需要在文件当前目录下命令行输入 node filename 即可,但是,既然是和vue脚手架一起构建,就充分利用起来。

    打开package.json , 在 scripts 中 添加一行

    "server": "node server/app.js",

    现在,直接在vue项目的根目录运行 npm run server 命令就可以开启服务了。

    3.  为了简便,直接修改vue初始化项目中的components下的HelloWorld.vue文件

    // HelloWorld.vue文件
    
    <template>
      <div class="process" >
        <progress max="100" :value="progressValue"></progress>
      </div>
    </template>
    <script>
      import Vue from 'vue'
      import VueSocketio from 'vue-socket.io'
      Vue.use(VueSocketio, 'ws://localhost:8081') // 注意和本地服务器地址及端口一致
    
      export default {
        data(){
          return{
            progressValue: 0, // 进度值
          }
        },
        //(socket.on)绑定事件放在sockets中
        sockets:{ 
          // 创建连接
          connect(){
              console.log('连接成功啦')
          },
          // 监听自定义progress事件,需与服务端emit事件名一致
          progress(res){
            this.progressValue = res;
            console.log('2222',res)
          }
        }
      }
    </script>
    <style scoped>
      .process { text-align:center; }
    </style>

    最后,运行代码

    npm run server   // 开启服务

    切记,不要关闭窗口,然后再新开命令行,注意,是新开一个,运行

    npm run dev

    就能看到一个进度条的效果了( 客户端(浏览器)发起请求,然后服务端不停传输数据,客户端监听对应事件和数据并重新渲染页面 )。

    这只是很简单的一个应用,在此基础上很容易就可以改成比较多人在线聊天室的功能。

  • 相关阅读:
    iOS开发进阶
    iOS开发UI篇—Quartz2D使用(绘图路径)
    iOS开发UI篇—控制器的View的创建
    iOS开发UI篇—Quartz2D简单使用(三)
    iOS开发从入门到精通
    win7访问win10需要用户名密码
    win10启用guest来宾账户的教程
    2021 年终总结
    vue elementui 树形
    js递归生成树形结构
  • 原文地址:https://www.cnblogs.com/hcxy/p/8575208.html
Copyright © 2011-2022 走看看