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


猜你喜欢
- 一.话题引入在做项目过程中,我们一般都是最先编写登录注册功能,登录功能最重要的是登录成功后,系统还会保存该登录用户信息,这种保存用户信息的逻
- 我们在shader中对贴图处理时,有时候会有一些比较复杂的运算,比方说三角函数,开方等,一般情况下,如果可以在越上层做运算,性能会越高。C#
- 序言:事件:此web项目的功能及其简单,就是有客户端来访问redis序列号服务时发送jison报文,项目已经在测试环境成功运行2周了,具体的
- 序本文主要研究一下java9 gc log参数的迁移。统一JVM及GC的Loggingjava9引进了一个统一的日志框架,把gc相关的log
- 由于今天在网上搜了一下c#写的计算器,发现大多都太繁琐了,很多没必要并且不容易理解的东西就专门写了这个博客1.首先新建一个windows窗体
- 一、TimeZone 简介TimeZone 表示时区偏移量,也可以计算夏令时。在操作 Date, Calendar等表示日期/时间的对象时,
- 有这样一道面试题:如何将SQLite数据库(dictionary.db文件)与apk文件一起发布? 答: 把这个文件
- 泛型的概述和优势泛型概述泛型:是JDK5中引入的特性,可以在编译阶段约束操作的数据类型,并进行检查。泛型的格式:<数据类型>;
- 问题的起源在项目里,有时候需要实现一个图片轮播的效果,用来展示Banner。同时,图片能循环播放,下面还有一排小圆点来指示当前轮播到哪一页了
- 本人亲测,在使用IDEA使用Maven模板创建项目或者在当前项目中New Project,Maven的以下三个配置参数会重置使用C:\Use
- 对于大规模乱序的数组,插入排序很慢,因为它只会交换相邻的元素,因此元素只能一点一点地从数组地一段移动到另一端。希尔排序改进了插入排序,交换不
- 网上很多人对设置控件的位置都使用view.setPadding(left, top, right, bottom) ,其实这玩意很差劲,它是
- 预加载bean在springBoot启动过程中就完成创建加载在AbstractApplicationContext的refresh方法中//
- Unsupported major.minor version 51.0解决办法今天偶然间同事遇到一个问题,也加深了自己对eclipse中b
- MD5的全称是Message-Digest Algorithm 5,Message-Digest泛指字节串(Message)的Hash变换,
- 本文实例为大家分享了Android TextView图文混合编排的具体代码,供大家参考,具体内容如下实现技术细节不难,两个要点:1、html
- 节点折叠 this.treeList1.CollapseAll(); 一、简介二、属性列表1、OptionsSelection:
- 为什么要用Jupyter Notebook推荐新手写python用什么编辑器就有有人问:为什么没有Jupyter Notebook。本来想数
- 两张表SystemParam(系统参数表) Suit (主题)SystemParam 与 Suit 是多对一Suit 的higerSuit字
- Spring Boot提供的监控接口,例如:/health、/info等等,实际上除了之前提到的信息,还有其他信息业需要监控:当前处于活跃状