【Node】简单的websocket长连接

这篇博客展示了如何利用Express和WebSocket库在Node.js环境中创建一个实时通信应用。通过设置路由,实现了用户连接管理,当用户发送消息时,该消息会被广播到所有连接的用户。同时,当用户断开连接时,会从用户列表中移除对应的连接记录。这为构建聊天室或其他需要实时交互的应用提供了基础架构。
摘要由CSDN通过智能技术生成
  • index
const express = require('express')
const expressWs = require('express-ws')
const app = express()
expressWs(app)

const prot = 8001 // 启动端口

const server = require('./server/server')
app.use('/test', server)

// 长连接
const ws = require('./server/ws')
app.use('/ws', ws)

app.listen(prot, err => {
  if (!err) console.log(`服务启动成功 http://localhost:${prot}`)
})

  • ws.js
const express = require('express')
const expressWs = require('express-ws')
const XEUtils = require('xe-utils')
const router = express.Router()
expressWs(router)

// 用户列表
let users = []

router.ws('/socketTest/:id', (ws, req) => {
  const id = req.params.id
  users.push({
    id,
    ws
  }) // 用户统一连接
  console.log(id + ' 用户,进入')
  // 接收消息
  ws.on('message', msg => {
    // 消息群发
    users.forEach(e => e.ws.send(msg))
  })
  // 退出聊天室
  ws.on('close', () => {
    XEUtils.remove(users, e => e.id === id)
    console.log(id, ' 用户,退出')
  })
})

module.exports = router
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值