oox 0.0.9 → 0.1.0

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.
@@ -1,190 +1,190 @@
1
-
2
- const SocketIOClient = require ( 'socket.io-client' )
3
-
4
- const Socket = require ( './socket.class' )
5
-
6
- const SocketIOServer = require ( './server.class' )
7
-
8
- const Global = require ( '../global' )
9
-
10
-
11
-
12
- module.exports = class SocketIOCore extends SocketIOServer {
13
-
14
-
15
-
16
- /**
17
- * 连接RPC服务
18
- * @param {String} url ws服务器地址
19
- * @param {String} caller 本地服务名称
20
- * @returns {Promise<Socket>}
21
- */
22
- static async connect ( url, caller = null ) {
23
-
24
- let socket = Global.sockets.get ( url )
25
-
26
- // 已经连接的直接返回
27
- if ( socket ) {
28
-
29
- try {
30
-
31
- await this.waitConnection ( socket )
32
- } catch ( error ) {
33
-
34
- this.onSocketDisconnect ( socket, error )
35
-
36
- throw error
37
- }
38
-
39
- return socket
40
- }
41
-
42
- if ( !caller ) throw new Error ( 'Caller Required' )
43
-
44
-
45
-
46
- const headers = {
47
- 'x-caller': String ( caller )
48
- }
49
-
50
-
51
-
52
- const [ callerServer ] = Global.socketIOServers.filter ( server => server.name === caller )
53
-
54
- if ( callerServer ) {
55
-
56
- const { host, port, path } = callerServer
57
-
58
- headers [ 'x-ip' ] = host
59
-
60
- headers [ 'x-caller-id' ] = `ws://${host}:${port}${path}`
61
- }
62
-
63
-
64
-
65
- // create socket handler
66
- const mURL = new URL ( url )
67
-
68
- socket = SocketIOClient.io ( mURL.origin, {
69
- extraHeaders: headers,
70
- path: mURL.pathname
71
- } )
72
-
73
- socket.data = { connected: false, id: url, host: mURL.host, owner: caller }
74
-
75
- Global.sockets.set ( url, socket )
76
-
77
- this.onSocketCreated ( socket )
78
-
79
-
80
-
81
- try {
82
-
83
- await this.waitConnection ( socket )
84
- } catch ( error ) {
85
-
86
- this.onSocketDisconnect ( socket, error )
87
-
88
- throw error
89
- }
90
-
91
- return socket
92
- }
93
-
94
-
95
-
96
- static onSocketCreated ( socket ) {
97
-
98
- socket.once ( 'disconnect', reason => this.onSocketDisconnect ( socket, reason ) )
99
- }
100
-
101
-
102
-
103
- /**
104
- * 客户端Socket连接事件
105
- * @param {Socket} socket
106
- */
107
- static onSocketConnection ( socket ) {
108
-
109
- socket.data.connected = true
110
-
111
- this.onConnection ( socket )
112
- }
113
-
114
-
115
-
116
- static onConnection ( socket ) { }
117
-
118
-
119
-
120
- /**
121
- * 客户端Socket断开事件
122
- * @param {Socket} socket
123
- */
124
- static onSocketDisconnect ( socket, reason ) {
125
-
126
- socket.data.connected = false
127
-
128
- socket.disconnect ( true )
129
-
130
- Global.sockets.delete ( socket.data.id )
131
-
132
- this.onDisconnect ( socket, reason )
133
- }
134
-
135
-
136
-
137
- static onDisconnect ( socket, reason ) { }
138
-
139
-
140
-
141
- /**
142
- * 等待socket连接
143
- * @param {Socket} socket
144
- */
145
- static async waitConnection ( socket ) {
146
-
147
- if ( socket.data.connected ) return
148
-
149
- if ( socket.connect ) socket.connect ( )
150
-
151
- try {
152
-
153
- await new Promise ( function ( resolve, reject ) {
154
-
155
- const onError = function ( reason ) {
156
-
157
- socket.offAny ( onError )
158
-
159
- const message = 'string' === typeof reason ? reason : reason.message
160
-
161
- reject ( new Error ( `SocketIO name[${socket.data.name}] id[${socket.data.id}] ${message}` ) )
162
- }
163
-
164
- socket.once ( 'disconnect', onError )
165
-
166
- socket.once ( 'connect_error', onError )
167
-
168
- socket.once ( 'connect_timeout', onError )
169
-
170
- socket.once ( 'reconnect_error', onError )
171
-
172
- socket.once ( 'reconnect_failed', onError )
173
-
174
- socket.once ( 'oox_connected', function ( { name } ) {
175
-
176
- socket.offAny ( onError )
177
-
178
- socket.data.name = name
179
-
180
- resolve ( )
181
- } )
182
- } )
183
- } catch ( error ) {
184
-
185
- throw new Error ( error.message )
186
- }
187
-
188
- this.onSocketConnection ( socket )
189
- }
1
+
2
+ const SocketIOClient = require ( 'socket.io-client' )
3
+
4
+ const Socket = require ( './socket.class' )
5
+
6
+ const SocketIOServer = require ( './server.class' )
7
+
8
+ const Global = require ( '../global' )
9
+
10
+
11
+
12
+ module.exports = class SocketIOCore extends SocketIOServer {
13
+
14
+
15
+
16
+ /**
17
+ * 连接RPC服务
18
+ * @param {String} url ws服务器地址
19
+ * @param {String} caller 本地服务名称
20
+ * @returns {Promise<Socket>}
21
+ */
22
+ static async connect ( url, caller = null ) {
23
+
24
+ let socket = Global.sockets.get ( url )
25
+
26
+ // 已经连接的直接返回
27
+ if ( socket ) {
28
+
29
+ try {
30
+
31
+ await this.waitConnection ( socket )
32
+ } catch ( error ) {
33
+
34
+ this.onSocketDisconnect ( socket, error )
35
+
36
+ throw error
37
+ }
38
+
39
+ return socket
40
+ }
41
+
42
+ if ( !caller ) throw new Error ( 'Caller Required' )
43
+
44
+
45
+
46
+ const headers = {
47
+ 'x-caller': String ( caller )
48
+ }
49
+
50
+
51
+
52
+ const [ callerServer ] = Global.socketIOServers.filter ( server => server.name === caller )
53
+
54
+ if ( callerServer ) {
55
+
56
+ const { host, port, path } = callerServer
57
+
58
+ headers [ 'x-ip' ] = host
59
+
60
+ headers [ 'x-caller-id' ] = `ws://${host}:${port}${path}`
61
+ }
62
+
63
+
64
+
65
+ // create socket handler
66
+ const mURL = new URL ( url )
67
+
68
+ socket = SocketIOClient.io ( mURL.origin, {
69
+ extraHeaders: headers,
70
+ path: mURL.pathname
71
+ } )
72
+
73
+ socket.data = { connected: false, id: url, host: mURL.host, owner: caller }
74
+
75
+ Global.sockets.set ( url, socket )
76
+
77
+ this.onSocketCreated ( socket )
78
+
79
+
80
+
81
+ try {
82
+
83
+ await this.waitConnection ( socket )
84
+ } catch ( error ) {
85
+
86
+ this.onSocketDisconnect ( socket, error )
87
+
88
+ throw error
89
+ }
90
+
91
+ return socket
92
+ }
93
+
94
+
95
+
96
+ static onSocketCreated ( socket ) {
97
+
98
+ socket.once ( 'disconnect', reason => this.onSocketDisconnect ( socket, reason ) )
99
+ }
100
+
101
+
102
+
103
+ /**
104
+ * 客户端Socket连接事件
105
+ * @param {Socket} socket
106
+ */
107
+ static onSocketConnection ( socket ) {
108
+
109
+ socket.data.connected = true
110
+
111
+ this.onConnection ( socket )
112
+ }
113
+
114
+
115
+
116
+ static onConnection ( socket ) { }
117
+
118
+
119
+
120
+ /**
121
+ * 客户端Socket断开事件
122
+ * @param {Socket} socket
123
+ */
124
+ static onSocketDisconnect ( socket, reason ) {
125
+
126
+ socket.data.connected = false
127
+
128
+ socket.disconnect ( true )
129
+
130
+ Global.sockets.delete ( socket.data.id )
131
+
132
+ this.onDisconnect ( socket, reason )
133
+ }
134
+
135
+
136
+
137
+ static onDisconnect ( socket, reason ) { }
138
+
139
+
140
+
141
+ /**
142
+ * 等待socket连接
143
+ * @param {Socket} socket
144
+ */
145
+ static async waitConnection ( socket ) {
146
+
147
+ if ( socket.data.connected ) return
148
+
149
+ if ( socket.connect ) socket.connect ( )
150
+
151
+ try {
152
+
153
+ await new Promise ( function ( resolve, reject ) {
154
+
155
+ const onError = function ( reason ) {
156
+
157
+ socket.offAny ( onError )
158
+
159
+ const message = 'string' === typeof reason ? reason : reason.message
160
+
161
+ reject ( new Error ( `SocketIO name[${socket.data.name}] id[${socket.data.id}] ${message}` ) )
162
+ }
163
+
164
+ socket.once ( 'disconnect', onError )
165
+
166
+ socket.once ( 'connect_error', onError )
167
+
168
+ socket.once ( 'connect_timeout', onError )
169
+
170
+ socket.once ( 'reconnect_error', onError )
171
+
172
+ socket.once ( 'reconnect_failed', onError )
173
+
174
+ socket.once ( 'oox_connected', function ( { name } ) {
175
+
176
+ socket.offAny ( onError )
177
+
178
+ socket.data.name = name
179
+
180
+ resolve ( )
181
+ } )
182
+ } )
183
+ } catch ( error ) {
184
+
185
+ throw new Error ( error.message )
186
+ }
187
+
188
+ this.onSocketConnection ( socket )
189
+ }
190
190
  }