@@ -23,10 +23,16 @@ if (typeof console === "undefined" || typeof console.log === "undefined") {
23
23
console . log = function ( ) { } ;
24
24
}
25
25
26
+ var socketReady = false ;
27
+ var onSocketReady = null ;
28
+
29
+
26
30
var Coder = {
27
31
coderlib_url : "/app/coderlib" ,
28
32
appname : '' ,
29
33
appurl : '' ,
34
+ socket : null ,
35
+ socketListeners : { } ,
30
36
31
37
listApps : function ( callback ) {
32
38
$ . get ( Coder . coderlib_url + "/api/app/list" , function ( data ) {
@@ -50,6 +56,72 @@ var Coder = {
50
56
} ) ;
51
57
} ) ;
52
58
} ,
59
+
60
+ connectSocket : function ( callback ) {
61
+ var doConnect = function ( ) {
62
+ Coder . socket = io . connect ( window . location . protocol + window . location . hostname + ':' + window . location . port + '/' ) ;
63
+ Coder . socket . on ( 'connect' , function ( ) {
64
+ console . log ( 'socket connected' ) ;
65
+
66
+ if ( callback ) {
67
+ callback ( ) ;
68
+ }
69
+ } ) ;
70
+ Coder . socket . on ( 'SERVERLOG' , function ( d ) {
71
+ console . log ( 'SERVERLOG: ' + JSON . stringify ( d ) ) ;
72
+ } ) ;
73
+ Coder . socket . on ( 'appdata' , function ( data ) {
74
+ console . log ( 'appdata received' ) ;
75
+ console . log ( data ) ;
76
+ if ( data && data . key !== undefined ) {
77
+ if ( Coder . socketListeners [ data . key ] !== undefined ) {
78
+ for ( var x = 0 ; x < Coder . socketListeners [ data . key ] . length ; x ++ ) {
79
+ var handler = Coder . socketListeners [ data . key ] [ x ] ;
80
+ var appdata = data . data ;
81
+ handler ( appdata ) ;
82
+ }
83
+ }
84
+ }
85
+ } ) ;
86
+ } ;
87
+
88
+ if ( socketReady ) {
89
+ doConnect ( ) ;
90
+ } else {
91
+ onSocketReady = doConnect ;
92
+ }
93
+ } ,
94
+
95
+ sendData : function ( appid , key , data ) {
96
+ if ( Coder . socket !== null ) {
97
+ Coder . socket . emit ( 'appdata' , {
98
+ appid : appid ,
99
+ key : key ,
100
+ data : data
101
+ } ) ;
102
+ }
103
+ } ,
104
+
105
+ addSocketListener : function ( key , handler ) {
106
+ if ( Coder . socketListeners [ key ] === undefined ) {
107
+ Coder . socketListeners [ key ] = [ ] ;
108
+ }
109
+ Coder . socketListeners [ key ] . push ( handler ) ;
110
+ } ,
111
+
112
+ removeSocketListener : function ( key , handler ) {
113
+ if ( Coder . socketListeners [ key ] !== undefined && handler !== null ) {
114
+ var updated = [ ] ;
115
+ for ( var x = 0 ; x < Coder . socketListeners [ key ] . length ; x ++ ) {
116
+ if ( Coder . socketListeners [ key ] [ x ] !== handler ) {
117
+ updated . push ( Coder . socketListeners [ key ] [ x ] ) ;
118
+ }
119
+ Coder . socketListeners [ key ] = updated ;
120
+ }
121
+ } else if ( Coder . socketListeners [ key ] !== undefined ) {
122
+ Coder . socketListeners [ key ] = [ ] ;
123
+ }
124
+ }
53
125
} ;
54
126
55
127
if ( typeof appname != 'nothing' ) {
@@ -59,6 +131,29 @@ if ( typeof appurl != 'nothing' ) {
59
131
Coder . appurl = appurl ;
60
132
}
61
133
134
+ var loadSocketIO = function ( ) {
135
+ var head = document . getElementsByTagName ( 'head' ) [ 0 ] ;
136
+ var script = document . createElement ( 'script' ) ;
137
+ script . type = 'text/javascript' ;
138
+ script . src = '/socket.io/socket.io.js' ;
139
+
140
+ script . onreadystatechange = socketIOReady ;
141
+ script . onload = socketIOReady ;
142
+ head . appendChild ( script ) ;
143
+ } ;
144
+ var socketIOReady = function ( ) {
145
+ socketReady = true ;
146
+ if ( onSocketReady ) {
147
+ onSocketReady ( ) ;
148
+ }
149
+ } ;
150
+ loadSocketIO ( ) ;
151
+
152
+
153
+
154
+
155
+
156
+
62
157
var getParams = ( function ( qs ) {
63
158
var params = { } ;
64
159
if ( typeof qs !== 'undefined' ) {
@@ -73,3 +168,6 @@ var getParams = (function(qs){
73
168
}
74
169
return params ;
75
170
} ) ( window . location . search . substr ( 1 ) . split ( '&' ) ) ;
171
+
172
+
173
+
0 commit comments