electron中使用ws

简介: electron中使用ws

项目基础依赖


vue: 3.2.25

typescript: 4.5.4

vite: 2.9.7


先安装对应的ws和@types/ws



npm ws


// 安装ws
npm install ws @types/ws
复制代码


项目依赖详情



网络异常,图片无法展示
|


1. 在electron的入口函数里,引入对应的master主体函数



const cp = require("../cp/master")
cp.onFn()
复制代码


由于当前项目是基于node多进程去实现的,所以会在cp文件夹下,创建一个对应的master主进程去处理任务


2. 在master中,开启多进程,根据不同的进程去处理不同的任务



const cp = require("child_process")
const onFn = async () => {
    cp.fork(path.join(__dirname, './websocket.js'))       // 启动websocket子进程
}
module.exports = {
    onFn
}
复制代码


3. 进入到websocket子进程中处理服务端的业务需求



/**
 * websocket消息通信部分
 * @author 何小玍。
 * @timer 2022/05/30
 */
const WebSocket = require("ws")
console.log('websocket.js已进来')
// 创建websocket服务
const server = new WebSocket.Server({ port: 1122 }, () => {
    console.log("websocket服务器正在监听1122端口")
})
// 连接时
server.on("connection", ws => {
    ws.on("message", msg => {
        console.log("客户端传来的消息", msg.toString())
        ws.send("客户端传过来的消息,服务端已收到!")
    })
})
// 错误异常
server.on("error", err => {
    console.error("服务器错误:", err.message)
})
// 服务器关闭事件监听
server.on("close", () => {
    console.log("服务器关闭!")
})
复制代码


4. 在对应的render层,就可以直接连接websocket使用了。



<template>
    <div class="index-container">
        <el-button type="primary" @click.stop="onSendSocketFn">首页</el-button>
    </div>
</template>
<script lang="ts">
import { defineComponent } from "vue"
const Websocket = require('ws')
export default defineComponent({
    name: "index-container",
    setup() {
        const client = new Websocket('ws://localhost:1122')
        // 启动websocket
        const onFn = () => {
            // 建立连接
            client.on('open', () => {
                console.log('已连接上服务器!')
                client.send('客户端时间:' + new Date().getTime())
            })
            // 断开连接
            client.on('close', () => {
                console.log('连接已断开!')
            })
            // 监听服务器返回消息
            client.on('message', e => {
                console.log('服务端返回的消息:', e.toString())
            })
            // 异常错误
            client.on('error', e => {
                console.log('客户端错误:', e.message)
            })
        }
        onFn()
        const onSendSocketFn = () => {
            client.send('发送给服务端')
        }
        return {
            onSendSocketFn
        }
    }
})
</script>
<style scoped>
</style>
复制代码


结果:



网络异常,图片无法展示
|

相关文章
缓存 人工智能 算法
815 1
|
Shell 数据安全/隐私保护
执行jobs命令查看不到任务的原因终于找到了
背景 执行nohup command &后,断开终端,执行jobs命令查看不到任务的原因,终于找到了。 首先执行完如下步骤: 1.nohup scp user@server:path/file localpath 2.输入密码 3.按Ctrl+Z挂起当前进程 4.使用命令bg让挂起的进程继续运行
|
存储 供应链 监控
如何开发一套采购供应链管理系统?(附架构图+流程图+代码参考)
采购供应链管理系统通过整合采购、供应商、库存及物流管理,助力企业提升效率、降低成本。系统涵盖采购订单、库存监控、供应商评估及物流追踪等核心模块,支持全流程自动化与数据驱动决策。本文详解系统开发要点,提供代码示例,帮助企业快速构建高效供应链管理体系,增强市场竞争力。
|
7月前
|
存储 人工智能 数据可视化
2026无限画布可视化工具全解析:释放创意与协作的新维度
在数字化协作时代,无限画布工具以无界缩放、自由连接与多维组织,打破传统文档的线性与空间限制,赋能非线性思维、实时协同与知识图谱构建,成为连接碎片化想法、管理复杂项目的核心载体。
1371 3
|
Python
Python Playwright 打包报错 Please run the following command to download new browsers
Python Playwright 打包报错 Please run the following command to download new browsers
734 0
|
JavaScript 网络协议
Node.js
fs模块 文件写入 writeFile 异步写入 writeFileSync 同步写入 appendFile / appendFileSync 追加写入 createWriteStream 流式写入 文件读取 readFile 异步读取 readFileSync 同步读取 createReadStream 流式读取 文件移动与重命名 文件删除 文件夹操作 mkdir 创建文件夹 readdir 读取文件夹 rmdir 删除文件夹 查看资源状态 path模块
434 1
|
Linux 开发者 iOS开发
QT:基于QMediaPlayer制作的视频播放器(最下方有整合包,可直接运行)
QMediaPlayer是Qt多媒体模块中的一个核心类,它提供了播放音频和视频内容的功能。这个类的设计旨在简化跨平台的媒体播放,使得开发者能够在多种操作系统(如Linux、Windows、macOS及移动平台)上轻松集成多媒体播放能力到他们的应用中,而无需关心底层实现细节。以下是关于QMediaPlayer的一些关键点:
2218 1
|
人工智能 自然语言处理 搜索推荐
Spark-TTS: AI语音合成的"变声大师"
Spark-TTS 是一款革命性的语音合成模型,被誉为“变声大师”。它通过创新的 BiCodec 技术将语音分解为语义和全局两种 Token,实现对音色、性别、语速等属性的精细控制。结合统一的 LLM 架构,Spark-TTS 简化了传统 TTS 的复杂流程,同时提供了前所未有的灵活性。此外,团队还发布了 VoxBox 开源数据集,为行业提供标准评估基准。尽管在零样本场景下仍存改进空间,但 Spark-TTS 已经开启了语音合成新时代,让个性化、可控的 AI 语音成为可能。
1215 5
|
存储 关系型数据库 分布式数据库
PolarDB PG 版冷热数据分层功能介绍
本文介绍了云原生数据库PolarDB PG版的冷热数据分层存储功能,涵盖其原理、特性及最佳实践。冷热分层存储通过将冷数据归档至OSS(对象存储服务),实现低成本高效存储,同时保持SQL操作透明性和性能优化。支持多种分层模式,如表与索引分层、大字段独立归档等,并提供压缩和缓存机制以提升访问速度。此外,还介绍了如何通过DDL语句轻松转存数据至OSS,以及一系列最佳实践,包括自动冷热分层、无锁表转存和一键转存等功能。
1152 36
|
Java 开发者
javafx jlink 遇到的非模块化的依赖打包报错“模块异常”的问题和处理
【9月更文挑战第18天】在使用JavaFX的jlink进行应用打包时,非模块化依赖可能导致“模块异常”报错。此文档详细分析了该问题的原因,并提供了四种解决方案:模块化依赖、自动模块转换、手动创建模块描述符及检查模块依赖关系。通过这些方法,可以有效解决此类问题,提高项目的可维护性和扩展性。建议开发者优先选用模块化设计。
1530 1

热门文章

最新文章