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>
复制代码


结果:



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

相关文章
|
3月前
|
缓存 人工智能 算法
DeepSeek-V4-Pro 正式版深夜突袭:Agent 评测暴涨 50 分,一套代码通吃 OpenAI 与 Anthropic 双生态
JeecgBoot AI专题研究 DeepSeekV4Pro 正式版全面拆解——Agent 能力跃迁、双 API 兼容与缓存降本实战![DeepSeekV4Pro 正式版发布概念图](https://oscimg.oschina.net/oscnet/up45eab3ac316682157a43
1233 1
DeepSeek-V4-Pro 正式版深夜突袭:Agent 评测暴涨 50 分,一套代码通吃 OpenAI 与 Anthropic 双生态
|
8月前
|
人工智能 监控 Linux
零基础保姆级|阿里云+本地部署OpenClaw 多Agent调度+任务自动化+大模型配置教程
2026年,OpenClaw(原Clawdbot)凭借多Agent协作架构、灵活的工作区划分与无WebUI的高效管理模式,成为个人与团队实现AI自动化的核心工具。这款开源AI智能体框架打破了传统单一模型的局限,通过Mission Control控制台实现百个Agent的统一调度,搭配阿里云千问大模型或免费Coding Plan API,可完成任务拆解、自动接力、需求澄清与全局监控,真正实现从“手动操作”到“智能管理”的跃迁。
1594 0
|
存储 供应链 监控
如何开发一套采购供应链管理系统?(附架构图+流程图+代码参考)
采购供应链管理系统通过整合采购、供应商、库存及物流管理,助力企业提升效率、降低成本。系统涵盖采购订单、库存监控、供应商评估及物流追踪等核心模块,支持全流程自动化与数据驱动决策。本文详解系统开发要点,提供代码示例,帮助企业快速构建高效供应链管理体系,增强市场竞争力。
|
10月前
|
存储 人工智能 数据可视化
2026无限画布可视化工具全解析:释放创意与协作的新维度
在数字化协作时代,无限画布工具以无界缩放、自由连接与多维组织,打破传统文档的线性与空间限制,赋能非线性思维、实时协同与知识图谱构建,成为连接碎片化想法、管理复杂项目的核心载体。
1593 3
|
Cloud Native 中间件 调度
云原生信息提取系统:容器化流程与CI/CD集成实践
本文介绍如何通过工程化手段解决数据提取任务中的稳定性与部署难题。结合 Scrapy、Docker、代理中间件与 CI/CD 工具,构建可自动运行、持续迭代的云原生信息提取系统,实现结构化数据采集与标准化交付。
1706 1
云原生信息提取系统:容器化流程与CI/CD集成实践
|
运维 监控 关系型数据库
运维实战:Windows服务挂掉了怎么办,通过Bat脚本实现自动重启
本文介绍了如何使用Bat脚本自动监控并重启Windows服务器上的挂掉服务,例如MySQL,以避免在假期等情况下需要紧急处理问题。首先,创建一个Bat脚本,设定每小时检查一次服务状态,如果服务停止则自动重启。脚本内容包括检查服务是否运行并根据状态执行相应操作。同时,脚本中包含了确保以管理员权限运行的代码。 脚本需设置为ANSI编码以防止乱码。推荐将Bat脚本封装为Windows服务以保证稳定运行,提供了使用NSSM工具、Windows服务程序和开源的Java工具winsw将批处理脚本转化为服务的方法。这些方法可以确保服务在后台可靠运行,即使在服务意外停止时也能自动恢复。
|
Java Maven
Java 旋转、翻转图片工具类(附代码) | Java工具类
Java 旋转、翻转图片工具类(附代码) | Java工具类
Java 旋转、翻转图片工具类(附代码) | Java工具类
|
安全 算法 Java
Java CAS原理和应用场景大揭秘:你掌握了吗?
CAS(Compare and Swap)是一种乐观锁机制,通过硬件指令实现原子操作,确保多线程环境下对共享变量的安全访问。它避免了传统互斥锁的性能开销和线程阻塞问题。CAS操作包含三个步骤:获取期望值、比较当前值与期望值是否相等、若相等则更新为新值。CAS广泛应用于高并发场景,如数据库事务、分布式锁、无锁数据结构等,但需注意ABA问题。Java中常用`java.util.concurrent.atomic`包下的类支持CAS操作。
883 2