websocket实现一个局域网在线摸鱼聊天室

1.思路

新建两个项目:

第一个前端项目,搭建聊天室页面,同时使用Websocket API,与服务端进行通信

第二个项目,使用node环境,下载ws包,搭建服务

年前就发现下包有问题,年后老淘宝镜像已经崩了,完全用不了,现在改https://registry.npmmirror.com

2.前端代码

html 复制代码
<template>
    <div class="container">
        <div class="messageBox"></div>
        <textarea class="message"></textarea>
        <button class="send">发送</button>
    </div>
</template>
<script>
export default {
  name: 'weChat',
  data () {
    return {

    }
  },
  mounted () {
    this.initWeChat()
  },
  computed: {
  },
  methods: {
    initWeChat () {
      const messageBox= document.querySelector('.messageBox')
      const textarea = document.querySelector('.message')
      const sendButton = document.querySelector('.send')
      // 生成WebSocket对象
      const ws = new WebSocket('ws://'改成你的ip':9001/ws')

      // 为WebSocket添加事件监听
      ws.addEventListener('message', function (event) {
        const div = document.createElement('div')
        const time = this.getTime()
        div.innerText = event.data+''+time
        messageBox.append(div)
      })
      
      ws.addEventListener('open', () => {
        alert('websocket连接建立完毕')
      })

      sendButton.addEventListener('click', () => {
        // 发送消息
        ws.send(textarea.value)
      })
    },
   getTime () {
      const now = new Date()
      const year = now.getFullYear()
      const month = String(now.getMonth() + 1).padStart(2, '0')
      const day = String(now.getDate()).padStart(2, '0')
      const hour = String(now.getHours()).padStart(2, '0')
      const min = String(now.getMinutes()).padStart(2, '0')
      const second = String(now.getSeconds()).padStart(2, '0')
      return `${year}-${month}-${day} ${hour}-${min}-${second}`
    }
  }
}
</script>
<style lang='scss'  scoped>
//样式自己写去吧
</style>

3.node服务

javascript 复制代码
// 导入WebSocket模块:
const WebSocket = require('ws')

// 引用Server类:
const WebSocketServer = WebSocket.Server

// 实例化:
const wss = new WebSocketServer({
  port: 9001,
  path: '/ws'
})

const wsList = []

// 监听创建连接事件,回调函数的参数是创建的连接
wss.on('connection', function connection (ws) {
  ws.on('error', console.error)

  // 监听该连接的接收信息事件
  ws.on('message', function message (data) {
    console.log('接收到信息: %s', data)
    for (const w of wsList) {
      if (w.readyState == w.OPEN) {
        w.send(data.toString())
      }
    }
  })

  wsList.push(ws)
})
//node wechat.js 启动服务

4.参考文档

1.mdn websocket文档
2.百度文档

相关推荐
Waay44 分钟前
“红帽系统管理二”知识点问答题:第11章 管理网络安全
网络·安全·web安全
Yupureki1 小时前
《Linux网络编程》8.网络层IP原理
linux·运维·服务器·网络·ip
yyuuuzz1 小时前
aws亚马逊入门常见认知误区
运维·服务器·网络·云计算·github·aws
剑锋所指,所向披靡!2 小时前
计算机网络概述
网络·计算机网络
DeepFlow 零侵扰全栈可观测2 小时前
运动战:AI 时代 IT 运维的决胜之道——DeepFlow 业务全链路可观测性的落地实践
运维·网络·人工智能·arcgis·云计算
志栋智能4 小时前
告别报告堆砌:超自动化巡检的智能分析与洞察
运维·服务器·网络·人工智能·自动化
AIFQuant6 小时前
2026 全球股票/外汇/贵金属行情 API 深度对比:延迟、覆盖、价格与稳定性
python·websocket·ai·金融·mcp
网络与设备以及操作系统学习使用者6 小时前
直连路由优先级最高
运维·网络·学习·华为·智能路由器
橙子圆1237 小时前
WebSocket
网络·websocket·网络协议
不做菜鸟的网工8 小时前
OSPF NBMA 网络环境下的 Hub-and-Spoke
网络协议