The Wesh network toolkit lets your application use the Wesh protocol to support privacy-based, off-grid, peer-to-peer communication.
For details, see the Wesh website at https://wesh.network. The website includes blog tutorials which introduce you to Wesh and walk you through some example applications and background of the Wesh protocol.
- Go = 1.22.4
Follow the React Native requirements and Expo requirements for your platform.
Install the package in your project:
# create new expo project
npx create-expo-app my-app --template expo-template-blank-typescript
cd my-app
npx expo install @berty/weshnet-expo
Add the following to your App.tsx
:
import React, { useState, useEffect } from "react";
import { StyleSheet, Text, View } from "react-native";
import * as WeshnetExpo from "@berty/weshnet-expo";
export default function App() {
const [peerID, setPeerID] = useState<string>();
useEffect(() => {
WeshnetExpo.init().then((client) => {
client.serviceGetConfiguration({}).then((res) => {
setPeerID(res.peerId);
console.log(res);
});
});
}, []);
const loadingView = <Text> Loading Weshnet... </Text>;
const weshView = <Text>hello my peerid is: {peerID}</Text>;
return (
<View style={styles.container}>{!peerID ? loadingView : weshView}</View>
);
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: "#fff",
alignItems: "center",
justifyContent: "center",
},
});
}
weshnet
needs some system permissions to get the phone's connectivity status and make mDNS
working. Edit your app.json
to include the following permissions:
{
"expo": {
"android": {
"permissions": [
"android.permission.READ_PHONE_STATE",
"android.permission.ACCESS_NETWORK_STATE",
"android.permission.CHANGE_WIFI_MULTICAST_STATE"
]
}
}
}
You need to update your native Android / iOS folders. If you have a managed workflow
(learn more here), do the following (this command will delete and recreate the native folders!!!)
npx expo prebuild --clean
cd example
make build.ios # or make build.android
If you want to help out, please see docs/developer-guide.md and CONTRIBUTING.md.
This repository falls under the Berty Code of Conduct.
You can contact us on the #questions-β
channel on discord.
Dual-licensed under Apache 2.0 and MIT terms.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
See the COPYRIGHT file for more details.