在express+vue-client系统中使用socket.io

本文介绍了如何在基于Express的后端和Vue.js前端应用中使用Socket.IO建立实时通信。首先需要安装vue-socket.io和socket.io-client库,然后在main.js中全局引入并建立与服务器的连接。在Vue组件中,可以通过this.$socket访问socket,并在mounted钩子中触发连接。通过监听和发送message事件,实现了简单的聊天功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大家好哇,今天再来讲讲在express框架和vue脚手架中使用socket.io的方法

接上一篇博客,已经是写好express后台的socket接口了,有不懂的小伙伴,可以去看看我的上一篇博客,里面涉及到一些简单的html示例,个人感觉还是可以看的理解的
那今天我们来看看,如何在vue中引入socket.io吧。
首先需要在vue项目中下载两个包,分别是vue-socket.io和socket.io-client,注意,虽然说vue-socket.io已经包含了socket.io-client,但是和我们要使用的client是不一样的,所以一定要下载两个:

npm install vue-socket.io
npm install socket.io-client

然后,需要到main.js中进行全局引用,当然,你想要在特定的页面引用也是没有问题,毕竟是模块引入所以不造成影响,这里我只介绍全局引入,大家有需要可以私聊我,在main.js中,导入两个模块,然后创建连接,之后挂载到vue身上:

// 引入socketio
import VUESOCKETIO from 'vue-socket.io'
import Socketio from 'socket.io-client'
Vue.config.productionTip = false
// 使用socketio
const SOCKETIO = new VUESOCKETIO({
  debug: true,
  connection: Socketio('ws://localhost:3000')
})
Vue.use(SOCKETIO) // 挂载

之后就可以在想要制作聊天界面的页面使用socket啦,这个socket是挂载到this.$socket身上的,所以使用的时候需要在mounted钩子函数身上触发socket连接,使用如下代码:

mounted () {
    this.username = Date.now() //这个是因为要标志用户身份才出的,简单使用到时间戳
    this.$socket.connect()
  },

然后简单设置一个输入框来输入内容和一个提交按钮:

 <input type="text" v-model="msg">
 <button @click="printmsg">打印信息</button>
 //data
 data () {
    return {
      username: '',
      msg: ''
    }
  },

然后,来看看printmsg函数怎么写,思路大概就是,点击提交之后,触发后端的message事件,后端又再次触发前端的message行为,所以我们需要在前端定义多一个message行为函数,挂在socket身上:

sockets: {
    message (obj) {
      console.log(obj, '这个才是真的')
    }
  },
  //methods
  methods: {
    printmsg () {
      const that = this
      this.$socket.emit('message', { userid: that.username, content: that.msg })
    }
   }

然后我们打开浏览器两个窗口,都输入localhost:8080,同时保证express后台保存运行状态,不断在两个窗口输入信息,提交,会看到控制台打印的内容和后台打印的内容:
在这里插入图片描述
在这里插入图片描述
好滴,那文章就到这里,里面的“信息”有点那个,其实是对象啦,大家请忽略哇~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值