Page MenuHomePhorge

D9611.1768383503.diff
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

D9611.1768383503.diff

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
@@ -3,7 +3,12 @@
import invariant from 'invariant';
import * as React from 'react';
-import { type TunnelbrokerMessage } from '../types/tunnelbroker/messages.js';
+import type { MessageReceiveConfirmation } from '../types/tunnelbroker/message-receive-confirmation-types.js';
+import {
+ type TunnelbrokerMessage,
+ tunnelbrokerMessageTypes,
+ tunnelbrokerMessageValidator,
+} from '../types/tunnelbroker/messages.js';
import type { ConnectionInitializationMessage } from '../types/tunnelbroker/session-types.js';
export type ClientMessageToDevice = {
@@ -29,7 +34,6 @@
+initMessage: ?ConnectionInitializationMessage,
};
-// eslint-disable-next-line no-unused-vars
function TunnelbrokerProvider(props: Props): React.Node {
const { children, initMessage, openSocket } = props;
const [connected, setConnected] = React.useState(false);
@@ -55,7 +59,43 @@
console.error('Tunnelbroker socket error:', e.message);
};
tunnelbrokerSocket.onmessage = (event: MessageEvent) => {
- console.log('Received message:', event.data);
+ if (typeof event.data !== 'string') {
+ console.error('socket received a non-string message');
+ return;
+ }
+ const rawMessage = JSON.parse(event.data);
+
+ if (!tunnelbrokerMessageValidator.is(rawMessage)) {
+ console.error('invalid TunnelbrokerMessage');
+ return;
+ }
+ const message: TunnelbrokerMessage = rawMessage;
+
+ for (const listener of listeners.current) {
+ listener(message);
+ }
+
+ if (
+ message.type ===
+ tunnelbrokerMessageTypes.CONNECTION_INITIALIZATION_RESPONSE
+ ) {
+ if (message.status.type === 'Success') {
+ setConnected(true);
+ console.info('session with Tunnelbroker created');
+ } else {
+ setConnected(false);
+ console.error(
+ 'creating session with Tunnelbroker error:',
+ message.status.data,
+ );
+ }
+ } else if (message.type === tunnelbrokerMessageTypes.MESSAGE_TO_DEVICE) {
+ const confirmation: MessageReceiveConfirmation = {
+ type: tunnelbrokerMessageTypes.MESSAGE_RECEIVE_CONFIRMATION,
+ messageIDs: [message.messageID],
+ };
+ socket.current?.send(JSON.stringify(confirmation));
+ }
};
socket.current = tunnelbrokerSocket;

File Metadata

Mime Type
text/plain
Expires
Wed, Jan 14, 9:38 AM (6 h, 35 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5926945
Default Alt Text
D9611.1768383503.diff (2 KB)

Event Timeline