如何使用 dio 从本地主机:3000 切换到准备在 Flutter 中生产的东西?
Posted
技术标签:
【中文标题】如何使用 dio 从本地主机:3000 切换到准备在 Flutter 中生产的东西?【英文标题】:How do I switch from local host : 3000 to something ready for production in Flutter using dio? 【发布时间】:2021-10-11 04:42:19 【问题描述】:我正在使用 dio 发出网络请求。在测试阶段,我使用本地主机端口 3000。我使用 javascript 文件和节点在测试模式下运行它。我会简单地在 javascript 文件上运行节点,它会启动端口,它会工作。这很棒,但是每当我在真实设备上运行它时,它都不起作用。所以我假设我需要将其更改为其他内容以发布...?我是新来的。任何建议或指导都会有所帮助,谢谢。
const muxServerUrl = 'http://localhost:3000';
initializeDio()
BaseOptions options = BaseOptions(
baseUrl: muxServerUrl,
connectTimeout: 8000,
receiveTimeout: 5000,
headers:
"Content-Type": contentType, // application/json
,
);
_dio = Dio(options);
实施
late Response response;
try
// print(response);
response = await _dio.post(
"/assets",
data:
"videoUrl": videoUrl,
,
);
catch (e)
print('ran 2');
throw Exception('Failed to store video on MUX');
if (response.statusCode == 200)
print('ran 4');
VideoData videoData = VideoData.fromJson(response.data);
String status = videoData.data!.status;
while (status == 'preparing')
await Future.delayed(Duration(seconds: 1));
videoData = (await checkPostStatus(videoId: videoData.data!.id))!;
status = videoData.data!.status;
print('Video READY, id: $videoData.data!.id');
return videoData;
那个节点临时 JS 文件
require("dotenv").config();
const express = require("express");
const bodyParser = require("body-parser");
const Mux = require("@mux/mux-node");
const Video = new Mux(
process.env.MUX_TOKEN_ID,
process.env.MUX_TOKEN_SECRET
);
const app = express();
const port = 3000;
var jsonParser = bodyParser.json();
app.post("/assets", jsonParser, async (req, res) =>
console.log("BODY: " + req.body.videoUrl);
const asset = await Video.Assets.create(
input: req.body.videoUrl,
playback_policy: "public",
);
res.json(
data:
id: asset.id,
status: asset.status,
playback_ids: asset.playback_ids,
created_at: asset.created_at,
,
);
);
app.get("/assets", async (req, res) =>
const assets = await Video.Assets.list();
res.json(
data: assets.map((asset) => (
id: asset.id,
status: asset.status,
playback_ids: asset.playback_ids,
created_at: asset.created_at,
duration: asset.duration,
max_stored_resolution: asset.max_stored_resolution,
max_stored_frame_rate: asset.max_stored_frame_rate,
aspect_ratio: asset.aspect_ratio,
)),
);
);
app.get("/asset", async (req, res) =>
let videoId = req.query.videoId;
const asset = await Video.Assets.get(videoId);
console.log(asset);
res.json(
data:
id: asset.id,
status: asset.status,
playback_ids: asset.playback_ids,
created_at: asset.created_at,
duration: asset.duration,
max_stored_resolution: asset.max_stored_resolution,
max_stored_frame_rate: asset.max_stored_frame_rate,
aspect_ratio: asset.aspect_ratio,
,
);
);
app.listen(port, () =>
console.log(`Mux API listening on port $port`);
);
【问题讨论】:
【参考方案1】:localhost
是所谓的环回地址,它之所以有效,是因为您正在机器上运行应用程序。当您发布应用程序时,您必须在某个服务器中托管您的 Nodejs 应用程序并使用该服务器的 IP 地址。在您托管该应用之前,我鼓励您花更多时间确保它的安全。
如果您只想在 android 模拟器上运行应用程序,您可以使用 10.0.2.2
来访问主机环回
【讨论】:
好的,我目前正在使用名为 host stinger 的服务。所以当我给它它的网址时。会不会是 main.js。我肯定会更多地关注安全性,谢谢。 当您说服务时,您是指云托管吗?由于您使用的是 Nodejs,您只需要在 VPS 中运行您的应用程序并将端口更改为 80,您需要设置认证,还有什么,但您可以查看。 好的,谢谢你,我想我有你所说的服务。它有内存、内核和运行文件。所以我认为这符合虚拟机的所有标准。 polaristech.tech/files/mux/mux-api-server 是它们所在的位置,所以如果我将其用作我的 url,它会说它已连接,但它不会运行需要 api 的操作 不,您应该删除该链接。您不提供您的 javascript 文件。在 Nodejs 中,javascript 在服务器上运行。您只需要 ssh 进入该 vps 并运行您的 node 应用程序,然后在更改为端口 80 后使用该 ip 地址。您需要查找 Nodejs 部署。以上是关于如何使用 dio 从本地主机:3000 切换到准备在 Flutter 中生产的东西?的主要内容,如果未能解决你的问题,请参考以下文章