electron中实现一个websocket服务器接收python端发送的数据

news/2024/10/19 3:28:51/

首先是electron端

const ws = require("ws");
const fs = require("fs")
const wss = new ws.Server({ port: 1234 });
wss.on('connection', (ws) => {ws.on('message', (message) => {console.log(`Received message: ${message}`)try {var data = JSON.parse(message);if (data.type == "status") {fs.writeFile('resources//status.json', message, (err) => {if (err) throw err})} else if (data.type == "car_view") {fs.writeFile('resources//car_view.json', message, (err) => {if (err) throw err})} else {fs.writeFile('resources//test.json', message, (err) => {if (err) throw err})}} catch (e) {console.log('Error parsing JSON: ' + e.message);}})
})

这是一个使用 Node.js 实现的 WebSocket 服务器,监听端口 1234,并将接收到的消息序列化为 JSON 格式并发送回客户端。服务器使用 WebSocket 服务器模块 “ws” 和文件系统模块 “fs” 来写入接收到的消息到 JSON 文件中。
服务器在监听到新连接时,将新连接赋值给变量 “ws”。当接收到客户端发送的消息时,服务器使用 JSON.parse() 方法解析消息,然后将消息输出到控制台。如果消息类型为 “status”,服务器将消息写入 “resources/status.json” 文件中。如果消息类型为 “car_view”,服务器将消息写入 “resources/car_view.json” 文件中。否则,服务器将消息写入 “resources/test.json” 文件中。

然后使用python端发送数据

import websocket
import threading
import time
import json# WebSocket服务器地址
websocket_server_url = "ws://127.0.0.1:1234"# 打开连接
ws = websocket.WebSocket()
ws.connect(websocket_server_url)# 开启线程定时发送消息
def send_message():while True:time.sleep(5)  # 每5秒发送一次data = {"type": "status","carSpeed": 60,"acceleration": 5,"location": {"x": "400px","y": "500px"},"trafficLight": "green","roadCondition": "slippery"}ws.send(json.dumps(data))print(f"发送的消息: {data}")threading.Thread(target=send_message).start()# 保持连接
while True:time.sleep(10)

这段代码是使用 Python 实现的 WebSocket 客户端,使用了 Python 的 socket 模块和 json 模块。
首先,通过 websocket.WebSocket() 方法创建了一个 WebSocket 对象 ws,并使用 ws.connect(websocket_server_url) 方法连接到了 WebSocket 服务器。
接着,通过 send_message() 方法实现了定时发送消息的功能,该方法使用一个无限循环来不断发送消息,每次发送时将消息序列化为 JSON 格式,并使用 ws.send() 方法发送出去。同时,通过打印消息来输出到控制台。
在主循环中,使用 time.sleep(10) 方法实现了长时间连接的效果。当长时间没有收到消息时,主线程将会退出。


http://www.ppmy.cn/news/107177.html

相关文章

XR云新未来 | 弹性算力赋能可交互、沉浸式商业实践

据XR市场研究报告显示,全球XR市场规模不断扩大,于2020年已超过100亿美元,预计到2025年规模将达到数百亿美元。XR技术广泛应用于娱乐、教育和企业领域,随着技术的进步,高分辨率显示、实时渲染和眼动追踪等创新技术的应用…

什么是一致性哈希?一致性哈希是如何工作的?如何设计一致性哈希?

1.什么是一致性哈希?一致性哈希是如何工作的?如何设计一致性哈希?05-25 2.系统设计:从零用户扩展到百万用户05-28 收起 如果你有 n 个缓存服务器,一个常见的负载均衡方式是使用以下的哈希方法: 服务器索…

QT链接库设置

以windows 平台为例&#xff0c;在.pro 文件中&#xff1a; 1 增加 INCLUDEPATH <头文件路径> DEPENDPATH <头文件路径> 2 LIBS -L<库目录路径> -l<库得名字> 3 设置MT、MTD、MD、MDD运行时库 win32:CONFIG(debug, debug|release): { QMAKE_CFLAGS_…

3.5. 异常处理

在Java中&#xff0c;异常是一种用于表示程序在运行过程中遇到的错误或异常情况的对象。Java提供了一套异常处理机制&#xff0c;可以帮助我们更好地处理运行时可能出现的错误和异常。异常处理的主要概念包括&#xff1a; 异常类&#xff1a;Java中的异常类是继承自Throwable类…

除蚂蚁文件数据恢复大师之外,还有哪些相似的软件?

数据丢失是一件常见的事情&#xff0c;许多人都会遇到这样的问题。为了解决这个问题&#xff0c;出现了许多数据恢复软件&#xff0c;其中包含蚂蚁文件数据恢复大师。但是&#xff0c;除了蚂蚁文件数据恢复大师之外&#xff0c;还有哪些类似的软件呢&#xff1f;本文为您整理了…

jvm之分析调优

写在前面 jvm调优不管是工作中还是面试中都异常重要&#xff0c;是衡量一个开发人员技术水平的重要指标&#xff0c;这也是个人的一个弱项&#xff0c;希望通过本文能够提高自我&#xff0c;也更能帮助到正在阅读文章的你&#xff0c;我们就开始吧&#xff01; 1&#xff1a;…

Python中的封装、继承与多态

1. 前言 面向对象的三大特性&#xff0c;想必大家肯定是耳熟能详。就是今天要介绍的内容&#xff1a;封装、继承、多态。面向对象的思想都是一样的&#xff0c;这里我用Python进行实现&#xff01; 2. 封装 2.1 什么是封装呢&#xff1f; 封装就是&#xff1a;我写了一个类…

6.Ansible Playbooks介绍

什么是Ansible Playbooks&#xff1f; Ansible Playbook是Ansible的编排语言&#xff61;在Playbooks中, 我们定义了我们想要Ansible做什么&#xff61;这是一组你提供给Ansible的指令来发挥它的魔力&#xff61; 例如上面的例子, 它可以像在不同服务器上按顺序运行一系列命令…