soket.io实现一对一通信

//前端  main.js

import {useUserInfo} from "@/stores/user"
const store=useUserInfo()
let socket=io("http://localhost:3008",{
    query:{
        username:store.userInfo.uid
    }
})
app.config.globalProperties.socket=socket


//服务端 ---app.js

const Koa = require("koa")
const app = new Koa()
const getSocket=require("./io/io.js")
const http = require('http').Server(app.callback())
const io = require("socket.io")(http, { cors: true })
io.listen(3008)
getSocket(io)

//io.js

module.exports =function(io){
     const userList=[]
   io.on("connection",(socket)=>{
       const username=socket.handshake.query.username
       if(!username)return
       const userInfo=userList.find(user=>user.username===username)
       if(userInfo){
        userInfo.id=socket.id
       }else{
        userList.push({
          id:socket.id,
          username
        })
       }
      //  console.log(userList)
        //  io.emit('online',{userList})
         socket.on('msg',(msgInfo)=>{
         const user= userList.find(user=>user.username==msgInfo.touid)
         if(user){
          socket.to(user.id).emit('msg',msgInfo)
         }
         })
   })

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值