aboutsummaryrefslogtreecommitdiff
path: root/assets/src/network
diff options
context:
space:
mode:
Diffstat (limited to 'assets/src/network')
-rw-r--r--assets/src/network/socket.ts33
1 files changed, 33 insertions, 0 deletions
diff --git a/assets/src/network/socket.ts b/assets/src/network/socket.ts
new file mode 100644
index 0000000..c056b41
--- /dev/null
+++ b/assets/src/network/socket.ts
@@ -0,0 +1,33 @@
+import { Socket } from "phoenix";
+import requests from "../stores/requests";
+
+let socket = new Socket("/socket", {});
+socket.connect();
+
+export const getToken: () => Promise<string> = () => {
+ let tokenChannel = socket.channel("token", {});
+ return new Promise((resolve, reject) => {
+ tokenChannel
+ .join()
+ .receive("ok", () => {
+ tokenChannel
+ .push("get_token", {}, 5000)
+ .receive("ok", ({ token }) => resolve(token))
+ .receive("error", err => reject(err))
+ .receive("timeout", err => reject(err));
+ })
+ .receive("error", err => reject(err));
+ });
+};
+
+export const joinShareChannel = token => {
+ let shareChannel = socket.channel(`share:${token}`);
+
+ shareChannel.on("request", requests.addRequest);
+
+ shareChannel
+ .join()
+ .receive("error", err =>
+ console.log("failed joining share channel:" + err)
+ );
+};