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

1.思路

新建两个项目:
第一个前端项目,搭建聊天室页面,同时使用Websocket API,与服务端进行通信
第二个项目,使用node环境,下载ws包,搭建服务

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

2.前端代码

<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+''+timemessageBox.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服务

// 导入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.百度文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/705754.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初探HarmonyOS之ArkTs使用教程

ArkTs是HarmonyOS&#xff08;鸿蒙操作系统&#xff09;的官方应用开发语言&#xff0c;它结合了TypeScript的静态类型特性和JavaScript的动态特性&#xff0c;为开发者提供了高效、简洁且强大的编程体验。写这篇文章记录分享一下&#xff0c;简单带你了解ArkTs的基本使用&…

YOLOv5-Openvino和ONNXRuntime推理【CPU】

1 环境&#xff1a; CPU&#xff1a;i5-12500 Python&#xff1a;3.8.18 2 安装Openvino和ONNXRuntime 2.1 Openvino简介 Openvino是由Intel开发的专门用于优化和部署人工智能推理的半开源的工具包&#xff0c;主要用于对深度推理做优化。 Openvino内部集成了Opencv、Tens…

支持国密ssl的curl编译和测试验证(上)

目录 1. 编译铜锁ssl库2. 编译nghttp2库3. 编译curl4. 验证4.1 查看版本信息4.2 验证国密ssl握手功能4.3 验证http2协议功能 以下以ubuntu 22.04环境为例进行编译 本次编译采用铜锁sslnghttp2curl&#xff0c;使得编译出来的curl可以支持国密ssl&#xff0c;并且可以支持http2…

在 Ubuntu 中, 使用 fsck 命令来修复磁盘文件系统

在 Ubuntu 中&#xff0c;可以使用 fsck 命令来修复磁盘文件系统。fsck 是用于检查和修复文件系统的工具。 使用 fsck 命令修复磁盘文件系统的步骤如下&#xff1a; 首先&#xff0c;您需要在命令行终端窗口中以 root 用户身份登录。 使用 fdisk -l 命令列出所有磁盘设备。 …

IDEA的LeetCode插件的设置

一、下载插件 选择点击File->Setting->Plugins&#xff1a;搜索LeetCode 二、打开这个插件 选择View —>Tool Windows—>leetcode 三、登陆自己的账号 关于下面几个参数的定义&#xff0c;官方给的是&#xff1a; Custom code template: 开启使用自定义模板&…

Springboot教程(二)——过滤器、拦截器

过滤器 过滤器可以在调用控制器方法之前进行一些操作&#xff0c;过滤器类一般放在filter包下。 配置类注册 使用过滤器时&#xff0c;要实现Filter接口&#xff0c;并重写doFilter方法&#xff1a; class TestFilter : Filter {override fun doFilter(request: ServletReq…

【Android 11】AOSP Settings WIFI随机MAC地址功能

AOSP Settings WIFI随机MAC地址功能 背景 最近客户提出了想要实现随机WIFIMAC地址的功能&#xff08;我们默认WIFI的MAC地址是固定的&#xff09;。网上搜到了一篇不错的文章&#xff0c;本次改动也是基于这个来写的。 由于客户指定使用的settings是AOSP的&#xff0c;所以在…

对数据结构的初步认识

前言: 牛牛开始更新数据结构的知识了.本专栏后续会分享用c语言实现顺序表,链表,二叉树,栈和队列,排序算法等相关知识,欢迎友友们互相学习,可以私信互相讨论哦! &#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&a…

dash shell 和 zsh shell 简单介绍

一、dash shell dash shell不能识别bash shell的所有脚本编程功能 dash shell支持expr命令和双圆括号方法&#xff0c;但不支持方括号方法。 bash shell的test命令允许你使用双等号()来测试两个字符串是否相等。这是为了照顾习惯在其他编程语言中使用这种格式的程序员而加上去…

【简写Mybatis】02-注册机的实现以及SqlSession处理

前言 注意&#xff1a; 学习源码一定一定不要太关注代码的编写&#xff0c;而是注意代码实现思想&#xff1a; 通过设问方式来体现代码中的思想&#xff1b;方法&#xff1a;5W1H 源代码&#xff1a;https://gitee.com/xbhog/mybatis-xbhog&#xff1b;https://github.com/xbh…

%00截断 [GKCTF 2020]cve版签到

打开题目 F12之后在Headers中发现hint 两者结合利用零字符截断使get_headers()请求到本地127.0.0. 结合链接 构造 ?urlhttp://127.0.0.1%00www.ctfhub.com 必须以123结尾 ?urlhttp://127.0.0.123%00www.ctfhub.com 得到flag 知识点&#xff1a; PHP中get_headers函数 g…

解析ChatGPT Plus相比chatgpt3.5有哪些优势

「ChatGPT Plus」提供更出色的对话体验和更广泛的应用能力&#xff0c;学生可以用来写作、职场人也可以用来写计划书、策划书等等&#xff0c;并且问它一些问题比搜索引擎好用多了简直。但普通人使用起来有一点门槛&#xff0c;并且升级4.0也难住了许多爱好者。 ChatGPT主要功能…

【Excel PDF 系列】EasyExcel + iText 库

你知道的越多&#xff0c;你不知道的越多 点赞再看&#xff0c;养成习惯 如果您有疑问或者见解&#xff0c;欢迎指教&#xff1a; 企鹅&#xff1a;869192208 文章目录 前言转换前后效果引入 pom 配置代码实现定义 ExcelDataVo 对象主方法EasyExcel 监听器 前言 最近遇到生成 …

微信小程序蓝牙通信HC08

总结这两天研究的蓝牙串口。人话版资料不多&#xff0c;主要靠翻别人的仓库和文档。 单片机部分&#xff0c;与蓝牙串口通信是通过串口。比我想的要简单&#xff0c;小程序部分&#xff0c;有非常多的服务和特征&#xff0c;而且人话版资料不多。 如果本文有什么问题&#xf…

代理模式(Proxy Pattern)

定义 代理模式&#xff08;Proxy Pattern&#xff09;是一种结构型设计模式&#xff0c;其目的是为其他对象提供一个代理或占位符&#xff0c;以控制对这个对象的访问。代理类通常在客户端和目标对象之间起到中介的作用&#xff0c;用于控制对目标对象的访问&#xff0c;并在必…

Kafka是如何保证消息不丢失

Apache Kafka通过多种机制来确保消息不丢失&#xff0c;包括数据复制&#xff08;Replication&#xff09;、持久化&#xff08;Persistence&#xff09;、确认机制&#xff08;Acknowledgments&#xff09;、幂等生产者&#xff08;Idempotent Producer&#xff09;、事务性发…

AI绘画工具合集,让想象触手可及!

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

【JS】【Vue3】【React】获取鼠标位置的方法:JavaScript、Vue 3和React示例

目录 使用JavaScript原生方法在Vue 3中获取鼠标位置在React中获取鼠标位置 随着Web应用程序的复杂性不断增加&#xff0c;获取用户交互信息变得越来越重要。其中&#xff0c;获取鼠标位置是一项常见的任务&#xff0c;可以用于实现各种交互效果&#xff0c;如拖拽、悬停提示等。…

通过curl 请求接口 /usr/bin/curl: Argument list too long

因为要发送的json数据为图片的base64码&#xff0c;使用该命令时提示参数过长&#xff0c;解决方法使用如下命令 curl -X POST -d data.json http://example.com/api 将要发送的报文体放入data.json 然后执行 使用来从文件中读取数据而不是直接在命令行上写入大量数据 示例&…

【目标检测新SOTA!v7 v4作者新作!】YOLO v9 思路设计 + 全流程优化 + 手把手训练自己数据

YOLO v9 思路复现 全流程优化 手把手训练自己数据 提出背景&#xff1a;深层网络的 信息丢失、梯度流偏差YOLO v9 设计逻辑可编程梯度信息&#xff08;PGI&#xff09;&#xff1a;使用PGI改善训练过程广义高效层聚合网络&#xff08;GELAN&#xff09;&#xff1a;使用GELAN…