react调用 grpc python Server -深圳网站优化推广公司
网站制作学习网JS脚本→正文: react调用 grpc python Server
字体:大 中 小

react调用 grpc python Server

JS脚本 2023/10/25 21:12:16  点击:不统计

原载于:原文章%77w%77%2Ef%6F%72%61%73%70%2E%63n
  react 通过前端grpc 调用 python server 服务,下面是react 代码以及相关配置。JavaScript 前端调用grpc 已经停止支持了。 都是通过vue 或者react 使用grpc 服务。

 python 服务代码 请看 python 调用 grpc 包括后端服务

1. 配置npm环境
安装npm 相关grpc 的服务组件,react使用
npm install google-protobuf 
npm install grpc-web
 
系统安装shell 需要安装protobuf 用于生成js 相关代码
snap install protobuf  
或者下面命令
apt  install protobuf-compiler  #
安装docker.
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun  #  shell阿里云直接安装
或者
 curl -fsSL https://test.docker.com -o test-docker.sh 官方安装docker 
 
mac 安装docker  
brew install --cask --appdir=/Applications docker
 
说明的是:gRPC-Web 的底层实际上是基于 HTTP/2 的,而不是 WebSocket。HTTP/2 提供了许多 WebSocket 所具有的功能,如双向通信和服务器推送,但同时还提供了更多的功能,如头部压缩、多路复用和流量控制。然而,由于浏览器的安全策略和兼容性问题,gRPC-Web 客户端不能直接发送 HTTP/2 请求。因此,gRPC-Web 客户端实际上发送的是 HTTP/1.1 的请求,然后由一个代理(如 Envoy)将这些请求转换为 HTTP/2 的请求并发送给 gRPC 服务器。
 
2. 写 proto 协议文件,包含 类,方法,定义名称为Forasp.proto 代码如下
 
syntax = "proto3";
// 生成代码 python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. Forasp.proto
// 包名称 与文件名一致
package Forasp;
service Rpc_server_name {
rpc Rpc_fun(reqArg) returns (retArg) {} // 双向非流 大写字母会在协议自动转为小写字母
}
// 定义请求reqArg 消息参数,
// 定义格式 类型 名称 = number;
// number 标示第几个参数
//任何参数操作,如果有下划线 _ 在生成协议时会变成驼峰
message reqArg {
string site_domain = 1;
int32 site_year = 2;
}
// 定义 返回retArg 中参数,return_str
message retArg {
string return_str = 1;
}
3. 生成js 扩展文件 客户端shell生成代码命令如下:
protoc -I=. Forasp.proto  --js_out=import_style=commonjs:.  --grpc-web_out=import_style=commonjs,mode=grpcwebtext:.
行中最后参数 就是 Forasp.proto。 
 
生成后文件如下:
Forasp_grpc_web_pb.js
Forasp_pb2.py
 
4. 服务端 我们直接用python rpc 服务,参考上面的  python ,方法名称更换了。
 
5. react 客户端 代码

import React, { useEffect, useState } from 'react';
import logo from './logo.svg';
import './App.css';
import { Rpc_server_nameClient } from './Forasp_grpc_web_pb';
import { reqArg } from './Forasp_pb';


const App =()=> {

const [message, setMessage] = useState([]);
const onClick=()=>{
// 生成远程调用client, new proto类名+Client
const client = new Rpc_server_nameClient('http://192.168.5.126:8080', null, null);
const request = new reqArg(); // 这里新建请求参数对象,用于 请求参数赋值
request.setSiteDomain('www.forasp.cn'); // 前面定义的名称如果有下滑线自动回更换为驼峰
request.setSiteYear(18);
// 方法名称如果有大写字母会自动转为小写
client.rpc_fun(request, {}, (err, response) => {
if (err) {
console.error(err);
return;
}
// 获取返回值 为 getReturnStr() ReturnStr 是proto 协议中是return_str 自动转为驼峰
setMessage((message) => [...message, response.getReturnStr()]);
});
}
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo"/>
<p onClick={onClick}>
点击这里看www.forasp.cn信息 web grpc 调用python server
</p >
{message.map((item, index) => {
return <p key={index}>{index}----{item}</p >;
})}
</header>
</div>
);
}

export default App;
 
6. 代理服务 ,代理文件 envoy.yaml  文件见下面附件
 
注意配置文件 代理监听0.0.0.0端口 8080 
代理upstream 到后段 pytho grpc 服务是192.168.1.122:5001 (与python服务保持一致,如果是服务器需要写服务器实际IP) 
docker 运行代理服务,命令行 
sudo docker run -d -p 8080:8080 -v $(pwd)/envoy.yaml:/etc/envoy/envoy.yaml envoyproxy/envoy:v1.14.1
sudo docker run -d -p 8080:8080 -v $(pwd)/envoy.yaml:/etc/envoy/envoy.yaml envoyproxy/envoy   # 这个是不指定版本,会自己下载
如果下载不下来
docker pull envoyproxy/envoy:latest
#mac 笔记本上会运行后有界面显示
 
9. 测试运行服务
python server.py #命令行保持运行
 运行react 代码
npm start 
启动代理服务 如果有客户端的可以通过客户端,没有客户端用命令行
 
10. 点击  网页文字,显示web 调用 python  grpc 接口结果,如下图
 
react 调用grpc





整体服务代码下载: react调用 grpc  python Server 代码下载

·上一篇:react 打包env变量输出html >>    ·下一篇:Unchecked runtime.lastError: The message port closed before a response >>
推荐文章
最新文章

相关内容推荐

广州网站制作平台网站主页制作需要哪些技术游戏网站制作表情包长春网站制作模板巫溪网站设计制作门户类网站制作市场占有率叙述网站制作的流程手机能不能制作网站网站设计制作的尺寸像素制作网站加图片下面注释河南郑洲网站制作公司在线制作母亲节网站自己制作网站需要给钱吗临邑网站建设制作精良温度计材料制作视频素材网站怎么用c 制作网站快秀如何制作手机视频网站网站制作好后图片打不开网站制作知识产权纠纷案诸城网站制作壁纸的软件昆山网站设计制作哪个好文章网站制作视频北京网站制作_乐云seo十年高青淄博网站制作公司正规解放路街道网站制作绍兴苏宁易购网站设计怎么制作分子生物学课件网站制作乐昌网站制作双鸭山如何制作自己的网站博野网站制作如何制作一个自己的网页网站邢台企业网站制作公司网站制作雪糕棒手工南京网站制作南京乐识放心起点网站是怎么制作的合川制作网站郑州网站制作书签教程苍南牌具网站是如何制作的王者头像制作网站长春营销网站制作品牌网站制作流程图大鹏自适应网站制作威海定制网站建设制作价格象山哪些免费的ppt制作网站专业制作网站多少钱好奇网站制作奶茶视频教程网站制作小玩具房地产网站制作小玩具成人日本国内手工制作网站大全高埗公司网站制作上线了+如何制作网站呢南京网站制作哪个服务好网站视频制作头像app制作文学网站的风险分析网站制作一般费用外国制作音乐的网站导购网站制作起泡网页设计dream制作网站罗湖网站设计与制作斗图吧表情包制作网站石龙商城网站制作佛山市行业网站制作报价如何制作qq邮箱钓鱼网站ad网站制作用文本编辑器制作网站长沙网站制作设计博山淄博专业响应式网站制作如何制作网站首页欢迎页面如何给女生制作一个网站黑马网站制作小玩具1元网站制作制作餐饮网站页面烤尚皇简易炫酷网站制作成都哪家制作网站好下城区企业网站制作平台橘子电影网站制作武冈制作网站上海免费制作网站襄阳制作网站开发如何制作彩票预测网站铜川网站制作设计找哪家求桥架制作网站推文制作网站荣成网站建设制作平谷市网站制作烈火网站制作怎么制作网站搜索功能济南有哪些网站制作公司洛阳制作网站的基本流程汝州网站制作汝州网站制作关于jsp制作网站的书网站平台制作软件网站样机制作宁海网站制作哪家好国外logo制作网站交互式网站制作例子眉山手机网站制作外包商务网站设计与制作文档江津网站制作案例夏津网站制作公司塘厦营销型网站制作欧式建筑模型网站制作PHP制作网站源码肇庆推广网站制作动漫作品展示网站的设计与制作网站制作怎么选精品网站制作ppt云南网站制作书签设计义务网站制作教学网站制作图文教程成都微信公众号网站制作5566网站制作ppt吴忠网站制作公司象山制作纸模图纸网站有哪些多人协同工作制作一个网站时WAP网站制作视频的软件一键制作网站手机版制作企业网站实训心得大型网站制作运营洋县网站制作高中制作会考制作网站yy头像制作网站真笔网网站制作需要哪些资料横岗微网站制作公司浪人网站制作冰淇淋泰州基础网站制作价格多少钱辽宁网站建设制作解决方案龙岩制作网站设计要多久徐水专业网站制作电话坑梓网站制作信息怎么才能制作出自己的网站网站设计制作咨询平台租房网站设计与制作的目的雅安网站制作找哪家个人建设网站制作用手机制作网站视频教程迈克杰克逊头像制作网站长葛网站制作的流程网站logo制作 ico假物流信息制作网站天威网站制作表情包在哪里可以制作购物网站如何制作cpa网站qq人工智能制作网站不良网站制作贴纸怎么表情制作网站上海网站制作积极上海迪基特巴基斯坦电影网站制作网站的搜索栏怎么制作宜宾制作网站本子网站制作ppt怎样用软件制作网站十堰网站制作u2028电脑游戏下载网站制作阿城自适应网站制作制作企业网站手机版制作网站时图片缩小网站制作首页选项网站制作与网页设计课程设计家族网站制作美食创建网站及制作网页的过程奶妈网站制作头像龙岩网站建设龙岩网站制作平凉家电维修网站制作售后奶茶海报制作网站网站设计制作的尺寸像素焦作网站首页制作dw制作班级网站的详细步骤制作网站的概念青羊网站制作有哪些广东质量网站制作交易价格苏州网站制作怎么样dw网站制作资源怀宁网站制作设计方案网站优化如何制作制作网站空间需要多少西厢记电影网站制作翠竹搜索网站制作鲜花网站网页制作互联网网站制作相关的问题青蛇电影网站制作代销网站制作美食合肥网站制作案例温岭用php制作网站有哪些步骤免费社区类手机网站制作光速搜索网站制作空包网总站网站制作网站制作毕业设计论文主题斗图吧表情包制作网站手写文字图片制作网站DNFWG网站制作起泡制作鲜花网站的素材增城新塘网站制作推广公司塘厦响应式网站制作学什么可以制作网站吗直播网站简易制作长沙网站制作蛋糕文案象山制作在线考试的网站有哪些海口网站制作方案临湘珠宝网站制作

合作伙伴

深圳网站优化推广公司

龙岗网络公司
深圳网站优化
龙岗网站建设
坪山网站建设
百度标王推广
天下网标王
SEO优化按天计费
SEO按天计费系统