我正在使用 Vue-cli webpack 模板通过 socket.io 生成有关聊天室的项目。

我用一个简单的实例对其进行了测试,当我单击按钮时,客户端会将参数发送到服务器端。但是当我点击按钮时,服务器端没有得到任何东西。

谁能告诉我我的编码有什么问题吗?我该如何解决这个问题?

非常感谢!

这是客户端

<template> 
 <div id="app"> 
 <input type='button' value='button' @click='clickButton()'> 
</div> 
</template> 
 
<script> 
  import Vue from 'vue' 
  import VueSocketio from 'vue-socket.io'; 
  Vue.use(VueSocketio, 'http://localhost:8070/'); 
 
  export default { 
    name: 'app', 
    data() { 
      return { 
      msg: 'Welcome to Your Vue.js App' 
    } 
  }, 
  sockets: { 
    connect: function() { 
     console.log('socket connected') 
  }, 
  customEmit: function(val) { 
     console.log('this method was fired by the socket server. eg:  
     io.emit("customEmit", data)') 
    } 
  }, 
  methods: { 
     clickButton: function(val) { 
     // $socket is socket.io-client instance 
     this.$socket.emit('a', 12, 5); 
  } 
  } 
  } 
  </script> 

这是服务器

const app = require('express')(); 
const server = require('http').createServer(app); 
const io = require('socket.io'); 
 
server.listen(8070); 
 
const ws = io.listen(server); 
 
ws.on('connection',(sock)=>{ 
  sock.on('a',(num1,num2)=>{ 
    console.log(`${num1},${num2}`) 
  }) 
}) 

请您参考如下方法:

  import VueSocketio from 'vue-socket.io'; 
  Vue.use(VueSocketio, 'http://localhost:8070/'); 

这应该在创建 Vue 实例之前只执行一次。不在组件中。

由于您使用的是 Vue-cli webpack,因此应该在 new Vue({}) 之前在 main.js 中完成


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!