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


结果:



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

相关文章
|
9月前
|
小程序 网络安全 Windows
swoole(二)ws与wss的区别
关于ws与wss的区别这里简单的说一下我目前的见解。 如果你有更多的见解欢迎在下方留言讨论。 最简单的理解就是: 服务器上服务端用的是:websocket协议(支持客户端的ws访问) 服务器上服务端用的是:websocket协议+TLS(支持客户端的wss访问) 客户端上用的是: ws协议或者wss协议 Wss与ws其实就和http与https的关系,wss需要验证域名证书,ws不需要验证域名证书。 这个其实都不重要。我们在开发的时候关系不是很大。 下边的才是我要说的重点: Ws链接可以使用IP+端口号的形式访问。 Wss链接只能使用域名的形式访问,因为服务器端需要通过域名来找对应的ssl证书
425 0
|
3月前
2.Electron之HelloWorld
2.Electron之HelloWorld
|
4月前
|
Rust API 开发者
【一起学Rust | 框架篇 | ws-rs框架】属于Rust的Websocket框架——ws-rs
【一起学Rust | 框架篇 | ws-rs框架】属于Rust的Websocket框架——ws-rs
616 0
|
4月前
|
前端开发 JavaScript 程序员
Electron
【5月更文挑战第1天】Electron
88 9
|
4月前
|
测试技术 Python
Tornado ws示例
Tornado ws示例
37 1
|
4月前
|
开发框架 JSON JavaScript
electron安装
electron安装
66 0
|
JavaScript 前端开发 API
electron:我们开始吧!
electron:我们开始吧!
150 0
|
存储 监控 前端开发
如何打造高质量的 Electron 应用?
如何打造高质量的 Electron 应用?
320 0
|
前端开发
Electron使用小技巧
electron-vue 中 隐藏闭 关闭 化 最大化 最小化按钮
|
iOS开发 MacOS Windows
使用 electron-builder 打包 Electron 程序
在将 Electron 代码开发完成后,如果想要投入生产环境,那就必须经过很关键的一步——打包。
784 0
使用 electron-builder 打包 Electron 程序