@reactoo/watchtogether-sdk-js 2.7.49 → 2.7.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/0.watchtogether-sdk.js +52792 -0
- package/dist/0.watchtogether-sdk.js.map +1 -0
- package/dist/f8d53dc60757998a740a.js +222 -0
- package/dist/src_modules_wt-iot-worker_worker_js.watchtogether-sdk.js +581 -0
- package/dist/src_modules_wt-iot-worker_worker_js.watchtogether-sdk.js.map +1 -0
- package/dist/vendors-node_modules_aws-iot-device-sdk-v2_dist_browser_js.watchtogether-sdk.js +52792 -0
- package/dist/vendors-node_modules_aws-iot-device-sdk-v2_dist_browser_js.watchtogether-sdk.js.map +1 -0
- package/dist/watchtogether-sdk.js +30365 -76378
- package/dist/watchtogether-sdk.js.map +1 -1
- package/dist/watchtogether-sdk.min.js +2 -2
- package/example/index.html +5 -1
- package/package.json +1 -1
- package/src/index.js +1 -1
- package/src/modules/wt-iot-worker.worker.js +164 -0
- package/src/modules/wt-iot2.js +355 -0
- package/webpack.config.js +10 -3
- package/src/modules/iot-worker.worker.js +0 -84
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { mqtt, iot } from 'aws-iot-device-sdk-v2';
|
|
2
|
+
import { Buffer } from 'buffer';
|
|
3
|
+
import process from 'process';
|
|
4
|
+
|
|
5
|
+
// Provide a global object for the worker environment
|
|
6
|
+
self.global = self;
|
|
7
|
+
self.Buffer = Buffer;
|
|
8
|
+
self.process = process;
|
|
9
|
+
console.log('Worker: Starting up');
|
|
10
|
+
let connection = null;
|
|
11
|
+
self.onmessage = function (event) {
|
|
12
|
+
const {
|
|
13
|
+
type,
|
|
14
|
+
params,
|
|
15
|
+
topic,
|
|
16
|
+
message
|
|
17
|
+
} = event.data;
|
|
18
|
+
console.log(`Worker: Received message of type: ${type}`);
|
|
19
|
+
switch (type) {
|
|
20
|
+
case 'connect':
|
|
21
|
+
connect(params);
|
|
22
|
+
break;
|
|
23
|
+
case 'disconnect':
|
|
24
|
+
disconnect();
|
|
25
|
+
break;
|
|
26
|
+
case 'is_connected':
|
|
27
|
+
isConnected();
|
|
28
|
+
break;
|
|
29
|
+
case 'clear_topics':
|
|
30
|
+
// No action needed in the worker
|
|
31
|
+
break;
|
|
32
|
+
case 'subscribe':
|
|
33
|
+
subscribe(topic);
|
|
34
|
+
break;
|
|
35
|
+
case 'unsubscribe':
|
|
36
|
+
unsubscribe(topic);
|
|
37
|
+
break;
|
|
38
|
+
case 'send':
|
|
39
|
+
send(topic, message);
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
function connect(params) {
|
|
44
|
+
console.log('Worker: Attempting to connect');
|
|
45
|
+
const {
|
|
46
|
+
apiMqttUrl,
|
|
47
|
+
apiMqttClientId,
|
|
48
|
+
region,
|
|
49
|
+
accessKeyId,
|
|
50
|
+
secretAccessKey,
|
|
51
|
+
sessionToken
|
|
52
|
+
} = params;
|
|
53
|
+
const configBuilder = iot.AwsIotMqttConnectionConfigBuilder.new_with_websockets();
|
|
54
|
+
configBuilder.with_clean_session(true);
|
|
55
|
+
configBuilder.with_client_id(apiMqttClientId);
|
|
56
|
+
configBuilder.with_endpoint(apiMqttUrl);
|
|
57
|
+
configBuilder.with_credentials(region, accessKeyId, secretAccessKey, sessionToken);
|
|
58
|
+
configBuilder.with_keep_alive_seconds(30);
|
|
59
|
+
configBuilder.with_ping_timeout_ms(3000);
|
|
60
|
+
configBuilder.with_reconnect_max_sec(5);
|
|
61
|
+
configBuilder.with_reconnect_min_sec(1);
|
|
62
|
+
const config = configBuilder.build();
|
|
63
|
+
const client = new mqtt.MqttClient();
|
|
64
|
+
connection = client.new_connection(config);
|
|
65
|
+
setupConnectionListeners();
|
|
66
|
+
connection.connect().then(() => {
|
|
67
|
+
console.log('Worker: Connection successful');
|
|
68
|
+
self.postMessage({
|
|
69
|
+
type: 'connect_result',
|
|
70
|
+
success: true
|
|
71
|
+
});
|
|
72
|
+
}).catch(error => {
|
|
73
|
+
console.error('Worker: Connection failed', error);
|
|
74
|
+
self.postMessage({
|
|
75
|
+
type: 'connect_result',
|
|
76
|
+
success: false,
|
|
77
|
+
error: error.message
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
function disconnect() {
|
|
82
|
+
if (connection) {
|
|
83
|
+
connection.disconnect().then(() => {
|
|
84
|
+
self.postMessage({
|
|
85
|
+
type: 'disconnect_result',
|
|
86
|
+
success: true
|
|
87
|
+
});
|
|
88
|
+
}).catch(error => {
|
|
89
|
+
self.postMessage({
|
|
90
|
+
type: 'disconnect_result',
|
|
91
|
+
success: false,
|
|
92
|
+
error: error.message
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
} else {
|
|
96
|
+
self.postMessage({
|
|
97
|
+
type: 'disconnect_result',
|
|
98
|
+
success: true
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function isConnected() {
|
|
103
|
+
const connected = connection && connection.currentState === 0 && connection.desiredState === 0;
|
|
104
|
+
self.postMessage({
|
|
105
|
+
type: 'is_connected_result',
|
|
106
|
+
connected
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
function subscribe(topic) {
|
|
110
|
+
if (connection && connection.currentState === 0 && connection.desiredState === 0) {
|
|
111
|
+
connection.subscribe(topic, mqtt.QoS.AtLeastOnce).then(() => {
|
|
112
|
+
self.postMessage({
|
|
113
|
+
type: 'subscribe_result',
|
|
114
|
+
success: true
|
|
115
|
+
});
|
|
116
|
+
}).catch(error => {
|
|
117
|
+
self.postMessage({
|
|
118
|
+
type: 'subscribe_result',
|
|
119
|
+
success: false,
|
|
120
|
+
error: error.message
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
} else {
|
|
124
|
+
self.postMessage({
|
|
125
|
+
type: 'subscribe_result',
|
|
126
|
+
success: false,
|
|
127
|
+
error: 'Not connected'
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
function unsubscribe(topic) {
|
|
132
|
+
if (connection && connection.currentState === 0 && connection.desiredState === 0) {
|
|
133
|
+
connection.unsubscribe(topic).then(() => {
|
|
134
|
+
self.postMessage({
|
|
135
|
+
type: 'unsubscribe_result',
|
|
136
|
+
success: true
|
|
137
|
+
});
|
|
138
|
+
}).catch(error => {
|
|
139
|
+
self.postMessage({
|
|
140
|
+
type: 'unsubscribe_result',
|
|
141
|
+
success: false,
|
|
142
|
+
error: error.message
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
} else {
|
|
146
|
+
self.postMessage({
|
|
147
|
+
type: 'unsubscribe_result',
|
|
148
|
+
success: false,
|
|
149
|
+
error: 'Not connected'
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
function send(topic, message) {
|
|
154
|
+
if (connection && connection.currentState === 0 && connection.desiredState === 0) {
|
|
155
|
+
connection.publish(topic, message, mqtt.QoS.AtLeastOnce, false);
|
|
156
|
+
} else {
|
|
157
|
+
console.error('Cannot send message: Not connected');
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
function setupConnectionListeners() {
|
|
161
|
+
connection.on('connect', () => {
|
|
162
|
+
self.postMessage({
|
|
163
|
+
type: 'connect'
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
connection.on('disconnect', () => {
|
|
167
|
+
self.postMessage({
|
|
168
|
+
type: 'disconnect'
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
connection.on('error', error => {
|
|
172
|
+
self.postMessage({
|
|
173
|
+
type: 'error',
|
|
174
|
+
data: error
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
connection.on('interrupt', error => {
|
|
178
|
+
self.postMessage({
|
|
179
|
+
type: 'interrupt',
|
|
180
|
+
data: error
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
connection.on('resume', error => {
|
|
184
|
+
self.postMessage({
|
|
185
|
+
type: 'resume',
|
|
186
|
+
data: error
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
connection.on('message', (topic, payload) => {
|
|
190
|
+
self.postMessage({
|
|
191
|
+
type: 'message',
|
|
192
|
+
data: {
|
|
193
|
+
topic,
|
|
194
|
+
payload
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
connection.on('connection_success', error => {
|
|
199
|
+
self.postMessage({
|
|
200
|
+
type: 'connection_success',
|
|
201
|
+
data: error
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
connection.on('connection_failure', error => {
|
|
205
|
+
self.postMessage({
|
|
206
|
+
type: 'connection_failure',
|
|
207
|
+
data: error
|
|
208
|
+
});
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
// Add a general error handler for uncaught exceptions
|
|
212
|
+
self.addEventListener('error', error => {
|
|
213
|
+
console.error('Worker: Uncaught error', error);
|
|
214
|
+
self.postMessage({
|
|
215
|
+
type: 'uncaught_error',
|
|
216
|
+
error: error.message
|
|
217
|
+
});
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// Add this at the end of the file
|
|
222
|
+
console.log('Worker: Setup complete');
|