Page MenuHomePhabricator

D9607.id32563.diff
No OneTemporary

D9607.id32563.diff

diff --git a/lib/facts/tunnelbroker.js b/lib/facts/tunnelbroker.js
new file mode 100644
--- /dev/null
+++ b/lib/facts/tunnelbroker.js
@@ -0,0 +1,9 @@
+// @flow
+
+import { isDev } from '../utils/dev-utils.js';
+
+const tunnnelbrokerURL: string = isDev
+ ? 'ws://localhost:51001'
+ : 'https://tunnelbroker.commtechnologies.org';
+
+export { tunnnelbrokerURL };
diff --git a/lib/shared/socket-utils.js b/lib/shared/socket-utils.js
--- a/lib/shared/socket-utils.js
+++ b/lib/shared/socket-utils.js
@@ -1,5 +1,7 @@
// @flow
+import { tunnnelbrokerURL } from '../facts/tunnelbroker.js';
+
function createOpenSocketFunction(baseURL: string): () => WebSocket {
const [protocol, address] = baseURL.split('://');
const prefix = protocol === 'https' ? 'wss' : 'ws';
@@ -7,4 +9,8 @@
return () => new WebSocket(endpoint);
}
-export { createOpenSocketFunction };
+function createTunnelbrokerSocket(): WebSocket {
+ return new WebSocket(tunnnelbrokerURL);
+}
+
+export { createOpenSocketFunction, createTunnelbrokerSocket };
diff --git a/lib/tunnelbroker/tunnelbroker-context.js b/lib/tunnelbroker/tunnelbroker-context.js
--- a/lib/tunnelbroker/tunnelbroker-context.js
+++ b/lib/tunnelbroker/tunnelbroker-context.js
@@ -32,9 +32,35 @@
};
function TunnelbrokerProvider(props: Props): React.Node {
- const { children } = props;
- const [connected] = React.useState(false);
+ const { children, initMessage, openSocket } = props;
+ const [connected, setConnected] = React.useState(false);
const listeners = React.useRef<Set<TunnelbrokerSocketListener>>(new Set());
+ const socket = React.useRef<?WebSocket>(null);
+
+ React.useEffect(() => {
+ if (connected || !initMessage) {
+ return;
+ }
+
+ const tunnelbrokerSocket = openSocket();
+
+ tunnelbrokerSocket.onopen = () => {
+ tunnelbrokerSocket.send(JSON.stringify(initMessage));
+ };
+
+ tunnelbrokerSocket.onclose = () => {
+ setConnected(false);
+ console.error('Connection to Tunnelbroker closed');
+ };
+ tunnelbrokerSocket.onerror = e => {
+ console.error('Tunnelbroker socket error:', e.message);
+ };
+ tunnelbrokerSocket.onmessage = (event: MessageEvent) => {
+ console.log('Received message:', event.data);
+ };
+
+ socket.current = tunnelbrokerSocket;
+ }, [connected, initMessage, openSocket]);
const sendMessage: () => Promise<void> = React.useCallback(() => {
return new Promise(() => {});

File Metadata

Mime Type
text/plain
Expires
Sun, Oct 6, 3:25 AM (22 h, 2 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2247527
Default Alt Text
D9607.id32563.diff (2 KB)

Event Timeline