Page MenuHomePhorge

D9611.1768205596.diff
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

D9611.1768205596.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
@@ -4,7 +4,12 @@
import * as React from 'react';
import { tunnnelbrokerURL } from '../facts/tunnelbroker.js';
-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 = {
@@ -50,13 +55,59 @@
tunnelbrokerSocket.onclose = () => {
setConnected(false);
- console.error('Connection to Tunnelbroker closed');
+ console.log('Connection to Tunnelbroker closed');
};
tunnelbrokerSocket.onerror = e => {
- console.error('Tunnelbroker socket error:', e.message);
+ console.log('Tunnelbroker socket error:', e.message);
};
tunnelbrokerSocket.onmessage = (event: MessageEvent) => {
- console.log('Received message:', event.data);
+ if (typeof event.data !== 'string') {
+ console.log('socket received a non-string message');
+ return;
+ }
+ let rawMessage;
+ try {
+ rawMessage = JSON.parse(event.data);
+ } catch (e) {
+ console.log('error while parsing Tunnelbroker message:', e.message);
+ return;
+ }
+
+ if (!tunnelbrokerMessageValidator.is(rawMessage)) {
+ console.log('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' && !connected) {
+ setConnected(true);
+ console.log('session with Tunnelbroker created');
+ } else if (message.status.type === 'Success' && connected) {
+ console.log(
+ 'received ConnectionInitializationResponse with status: Success for already connected socket',
+ );
+ } else {
+ setConnected(false);
+ console.log(
+ '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
Mon, Jan 12, 8:13 AM (1 h, 26 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5922395
Default Alt Text
D9611.1768205596.diff (2 KB)

Event Timeline