1
1
'use strict' ;
2
2
3
3
importScripts ( 'dist/MqttBundle.js' ) ;
4
- //importScripts('dist/MqttBundle.min.js');
5
4
6
5
// detect if we are a Worker or SharedWorker
7
6
var worker = typeof self . postMessage === 'function' || false ;
@@ -25,14 +24,39 @@ var util = {
25
24
// the proper URL is supplied via client.connect as the last argument
26
25
var document = { } ;
27
26
28
- var serviceWorker = {
27
+ var mqttWorker = {
29
28
// map for the clients eg. portN => clientN
30
29
clients : { } ,
31
30
// a scope wrapping function to generate different postMessages to the worker client
32
31
generateMessageCallback : function ( port , type ) {
33
32
return function ( ) {
34
33
// type is something like 'publish', 'subscribe', 'message' or 'callback'
35
- port . postMessage ( { type : type , args : arguments } ) ;
34
+ // posting arguments can fail to du cloning the object. We might have to reduce the arguments we send back
35
+ // to the browser
36
+
37
+ switch ( arguments . length ) {
38
+ case 0 :
39
+ port . postMessage ( { type : type } ) ;
40
+ break ;
41
+ case 1 :
42
+ port . postMessage ( { type : type , args : { 0 : arguments [ 0 ] } } ) ;
43
+ break ;
44
+ case 2 :
45
+ port . postMessage ( { type : type , args : { 0 : arguments [ 0 ] , 1 : arguments [ 1 ] } } ) ;
46
+ break ;
47
+ case 3 :
48
+ //port.postMessage({type: type, args: {0: arguments[0],1: arguments[1]}});
49
+ port . postMessage ( { type : type , args : { 0 : arguments [ 0 ] , 1 : arguments [ 1 ] , 2 : arguments [ 2 ] } } ) ;
50
+ break ;
51
+ default :
52
+ port . postMessage ( { type : type , args : { 0 : arguments [ 0 ] } } ) ;
53
+ //port.postMessage({type: type, args: arguments});
54
+ }
55
+
56
+ //if(type === 'close') {
57
+ // port.postMessage({type: type});
58
+ //} else {
59
+ //}
36
60
}
37
61
} ,
38
62
@@ -45,7 +69,6 @@ var serviceWorker = {
45
69
createClient : function ( args , port ) {
46
70
var generateMessageCallback = this . generateMessageCallback ;
47
71
48
-
49
72
function addCallbacks ( mqtt ) {
50
73
51
74
[ 'close' , 'connect' , 'error' , 'message' , 'offline' , 'reconnect' ]
@@ -61,7 +84,7 @@ var serviceWorker = {
61
84
62
85
/**
63
86
* A callback method for the 'connect' event. Connect events are only fired when used with a
64
- * SharedServiceWorker .
87
+ * SharedWebWorker .
65
88
* @param {Object } event that triggered the connect
66
89
*/
67
90
connect : function ( event ) {
@@ -100,6 +123,7 @@ var serviceWorker = {
100
123
} else {
101
124
port = event . srcElement ;
102
125
}
126
+
103
127
var callback ;
104
128
var client = this . clients [ port ] ;
105
129
@@ -110,8 +134,9 @@ var serviceWorker = {
110
134
try {
111
135
this . clients [ port ] = this . createClient . apply ( this , [ arr , port ] ) ;
112
136
} catch ( err ) {
113
- console . error ( err ) ;
137
+ // console.error(err);
114
138
}
139
+ // sending back the options set on the client
115
140
port . postMessage ( { type : 'options' , args : this . clients [ port ] . options } ) ;
116
141
break ;
117
142
@@ -155,5 +180,5 @@ if(worker) {
155
180
event = 'message' ;
156
181
}
157
182
// binding to the 'message'/'connect' event at the serverWorker
158
- self . addEventListener ( event , serviceWorker [ event ] . bind ( serviceWorker ) ) ;
183
+ self . addEventListener ( event , mqttWorker [ event ] . bind ( mqttWorker ) ) ;
159
184
0 commit comments