tauri项目可以直接使用axios发送请求啊,为啥要使用tauri集成的http呢,可能是因为安全吧,如果使用tauri集成的http发送请求的话,需要添加可访问域名白名单。或者是要想使用rust发送请求,就可以使用tauri集成的http发送请求。
我之前一直以为不能使用axios呢,今天突然发现是可以使用的。
也可以直接使用js的websocket发送消息了,反正就是js的环境能用的,tauri里面都能用,因为我想到了tauri只是集成了webview,它里面还是用的各个平台的浏览器内核,所以就可以理解成是在开发一个网站一样,只是tauri把这个网站包装了一下。
发送websocket消息:
打包后的exe程序也是没有问题的:
使用vue3和ts写的发送websocket消息代码示例:
<script setup lang="ts">
import axios from "axios";
const send = () => {
axios({
method: "get",
url: "url地址", //user.json与当前文件在同一个路径下,如果user.json不存在则返回‘请求失败’
responseType: "json", //这句不能少 否则火狐浏览器下会报错
//上述之后会返回一个Promise对象,然后调用该对象的then方法(也就是执行成功的回调方法)
})
.then(function (resp) {
//resp表示执行成功的结果
console.log("axios-----", resp);
})
.catch((err) => {
//catch表示执行失败的调用函数 err表示失败的结果
console.log("请求失败", err);
});
};
const initWebsocket = () => {
//初始化websocket
let planWebsocket: any = null;
let planIP: any = "127.0.0.1"; // IP地址
let planPort: any = "8765"; // 端口号
if ("WebSocket" in window) {
planWebsocket = new WebSocket("ws://" + planIP + ":" + planPort); // 通信地址
planWebsocket.onopen = function (event: any) {
console.log("建立连接", event);
let sendData = "你好啊";
planWebsocket.send(sendData); // 发送获取数据的接口
};
planWebsocket.onmessage = function (event: any) {
console.log("收到消息:" + event.data);
};
planWebsocket.onclose = function (event: any) {
console.log("连接关闭", event);
};
planWebsocket.onerror = function () {
alert("websocket通信发生错误!");
};
} else {
alert("该浏览器不支持websocket!");
}
};
// 发送websokcet消息
const sendWebSocket = () => {
console.log("发送websocket消息");
initWebsocket();
};
</script>
<template>
<div class="container">
<h1>Welcome to Tauri!</h1>
<div>
<button @click="send">发送axios请求</button>
<button @click="sendWebSocket">发送Websocket</button>
</div>
</div>
</template>
<style scoped>
.logo.vite:hover {
filter: drop-shadow(0 0 2em #747bff);
}
.logo.vue:hover {
filter: drop-shadow(0 0 2em #249b73);
}
</style>