python和JavaScript通信
作者:决战北京城 发布时间:2023-02-20 19:40:23
标签:python,JavaScript,通信
js和python是两种语言,js处理网页数据,python可作为服务端开发,两者通过
websocket
进行通信。websocket
是socket的封装,省去了通信上的HTTP协议转换上的麻烦.大中型项目推荐使用torando/Djiango平台,两个平台集成度较高,方便开发使用.
实验以发送html页面上的图片到服务器后端为例子.
服务端接收图片后,开启本地端口为10086的服务,等待前端的连接.服务把前端发的图像url存在本地文件car.bmp.
import asyncio
import websockets
import urllib.request
async def recv_user_msg(websocket):
while True:
url = await websocket.recv()
urllib.request.urlretrieve(url,'car.bmp')
await websocket.send('ok')
async def run(websocket, path):
while True:
try:
await recv_user_msg(websocket)
except websockets.ConnectionClosed:
print("ConnectionClosed...", path)
break
if __name__ == '__main__':
print("127.0.0.1:10086 websocket...")
asyncio.get_event_loop().run_until_complete(websockets.serve(run, "127.0.0.1", 10086))
asyncio.get_event_loop().run_forever()
缺少module直接pip install安装解决.
pip install websockets
pip install urllib
在页面上嵌入img标签,连接服务端,点击发送图片,图片发送至服务端,并且显示返回结果.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>测试Socket——ws://127.0.0.1:10086</title>
</head>
<body>
<img id = 'img' src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1598273151875&di=2823d5f7c3aa5e075bd785572e3e1561&imgtype=0&src=http%3A%2F%2Fimage.9game.cn%2F2019%2F8%2F8%2F90082743.jpg"/>
<button onclick = "send_img()">发送图片</>
<script type="text/javascript">
var socket;
var ws = new WebSocket("ws://127.0.0.1:10086/test");
socket = ws;
ws.onopen = function() {
console.log('连接成功');
};
ws.onmessage = function(evt) {
var received_msg = evt.data;
alert('recv:' + received_msg + ' 发送完成');
};
ws.onclose = function() {
s = '断开了连接'
alert(s);
};
function send_img() {
image = document.getElementById('img');
socket.send(image.src);
}
</script>
</body>
</html>
来源:https://blog.csdn.net/obanaganastar/article/details/108203966
0
投稿
猜你喜欢
- 先看代码public class MaxHuiWen {public static void main(String[] args) { &
- 1.什么是String?首先,初学者一定要知道String是一个类,它是字符串类型,但它不属于基本数据类。 所谓字符串类型,意思就好比将字符
- 一、简介在Flutter应用开发过程中,多个页面的跳转需要使用路由,除了官方提供的Navigator外,我们还可以使用一些第三方路由框架来实
- 前言本次带来 JVM 的另一块重要内容,类加载机制,不废话,直接开怼。1、类加载的过程。类从被加载到虚拟机内存中开始,到卸载出内存为止,它的
- 本文实例为大家分享了Java 1.8使用数组实现循环队列的具体代码,供大家参考,具体内容如下1、引入使用数组实现循环队列,功能如下:1)is
- 一. 依赖管理Ⅰ. 部分dependency导入时为啥不需要指定版本?我们创建项目时添加的依赖并没有帮我们指定版本号<>,那Sp
- 在windows环境下,我们通常在IDE如VS的工程中开发C++项目,对于生成和使用静态库(*.lib)与动态库(*.dll)可能都已经比较
- 在之前的博客使用SpringMVC创建Web工程并使用SpringSecurity进行权限控制的详细配置方法 中,我们描述了如何配置一个基于
- 在上一篇文章中,我为大家介绍了《5种创建文件并写入文件数据的方法》,本节我们为大家来介绍6种从文件中读取数据的方法.另外为了方便大家理解,我
- 目录前言I. 字符串转列表1. jdk支持方式2. guava方式3. apache-commonsII. 列表转字符串1. StringB
- 首先,确保 IDEA 软件正确安装完成,Java 开发工具包 JDK 安装完成。IDEA 的 Java 项目 (Project) 则相当于
- Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,它是一种基于64个可打印字
- using System; using System.Collections.Generic; using
- 本文实例讲述了Android编程使用HTTP协议与TCP协议实现上传文件的方法。分享给大家供大家参考,具体如下:Android上传文件有两种
- jmap:Java内存映像工具jmap(Memory Map for Java)命令用于生成堆转储快照(一般称为heapdump或dump文
- 对其做了些优化,但此种sql生成方式仅适用于复杂程度不高的sql,所以实用性不是很高,仅仅是写着玩的,知道点mybatis的注解形式的使用方
- 今天在码代码的时候突然想到这个问题,觉得有点困惑。在网上也翻阅不少帖子其中有一个帖子给了我一个思路,其实也是解释了基础概念。概念一:try
- 看到软二的群里,某童鞋发了个自己的java大作业的截图,类似于一个图片,处理后,根据不同的灰度值,填充不同的字符。故,我也用C#来写个玩玩~
- 本文实例为大家分享了Java实现简单的飞机大战游戏,控制主飞机的具体代码,供大家参考,具体内容如下接着上一篇:Java实现简单的飞机大战游戏
- ZooKeeper 是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、分布