vue-socketio

1.配置,vue-cli裡面(因爲我之前用2.9几版本的發現引入vue-socket.io編譯會報錯,所以直接用vue-cli版本了)main.js文件

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import VueSocketio from 'vue-socket.io';
Vue.config.productionTip = false
const url = `http://127.0.0.1:3000`;
Vue.use(new VueSocketio({
  debug: true,
  connection: (url),
}))


new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

2.服務端(nodejs)

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
io.on('connection',function(socket) {
  console.log("1,listening on *:3000connction")
  socket.on('disconnect', () => {
    console.log('user disconnected');
  });
  //接收数据
  socket.on('login', function (obj) {                
      console.log("login",obj.username);
      // 发送数据
      socket.emit('relogin', {
        msg: `你好relogin,${obj.username}`,
        code: 200
      });
      socket.emit('reflog2',{
        msg:'第二次reflog',
        code:200
      })  
  });
  socket.on('join',function(obj){
    console.log(`${obj.username}加入房間${obj.groupId}成功`)
    socket.emit('joinSuccess',{
      msg:`${obj.username}加入房間${obj.groupId}成功`,
      code:200
    })
  })
  setInterval(() => {
    let date = new Date();
    socket.emit('currentTime',{
      data:date,
      code:200
    })
  }, 1000);

  socket.emit('test', {
    msg: `test測試信息`,
    code: 200
  }); 

});
 
http.listen(3000, function(){
  console.log('listening on *:3000');
});

3.前端代碼

<template>
  <div>
    <button @click="login">login</button>
    <button @click="join">join</button>
   當前時間: {{current}}
  </div>
</template>

<script>
// @ is an alias to /src
export default {
  name: 'Home',
  components: {
  },
  data(){
    return{
      current:""
    }
  },
  mounted(){
    this.init()
  },
  watch:{
    sockets(){
      console.log("sockets",this.sockets)
    }
  },
  methods:{
    init(){
      // console.log("initsockets",this.sockets)
      // console.log("initsocketsIo",this.sockets.io)
      
      //接收服务端的信息
      // this.sockets.subscribe('relogin', (data) => {
      // console.log("subscribe,relogin",data)
      // })
    },
    login(){
      //发送信息给服务端
      this.$socket.emit('login',{
      username: 'bobo',
      password: '1234'
      });
      this.$socket.emit('join',{
        groupId:'房間123',
        username:'bobo'
      })
    },

    join(){
       let token = "用戶"+parseInt(Math.random()*100000)
       let joinRequest = {
        userId: token,
        groupId: "666"
        };
      this.$socket.emit('join', joinRequest);
    },
  },
  sockets:{
    join(data){
      console.log("join",data)
    },
    test(data){
      console.log("test",data)
    },
    connect(){
      // 获取每台客服端生成的id
      // this.websocketid = this.$socket.id;
      console.log('链接服务器');
    },
    disconnect(){
      console.log("断开服务器链接")
    },
    relogin(data){
      console.log("login data",data)
    },
    reflog2(data){
      console.log("測試後台同時發送的兩個事件",data)
    },
    currentTime(data){
      this.current = data.data
    }
 
  }
}
</script>

後台傳給前台的數據,前台無法在sockets里監聽到

socketio會默認下載3.0.9版本(2020.05.20),不知道我是不是遺漏了什麼,這裡回退到了3.0.7版本就可以監聽到sockets裡面的信息了

附上github地址:
https://github.com/thbor/socketo-test

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值