Skip to content

Commit 21a8346

Browse files
authored
TcpSocket.on() now returns a NativeEventSubscription (#22)
1 parent 0d9a8af commit 21a8346

File tree

1 file changed

+46
-19
lines changed

1 file changed

+46
-19
lines changed

src/TcpSocket.js

Lines changed: 46 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,38 +11,65 @@ const STATE = {
1111
};
1212

1313
export default class TcpSocket {
14+
/**
15+
* Initialices a TcpSocket.
16+
*
17+
* @param {Number} id
18+
* @param {import('react-native').NativeEventEmitter} eventEmitter
19+
*/
1420
constructor(id, eventEmitter) {
1521
this._id = id;
1622
this._eventEmitter = eventEmitter;
1723
this._state = STATE.DISCONNECTED;
1824
}
1925

20-
on(event, callback) {
26+
/**
27+
* Adds a listener to be invoked when events of the specified type are emitted by the `TcpSocket`.
28+
* An optional calling `context` may be provided.
29+
* The data arguments emitted will be passed to the listener callback.
30+
*
31+
* @param {string} event Name of the event to listen to
32+
* @param {function(object): void} callback Function to invoke when the specified event is emitted
33+
* @param {any} [context] Optional context object to use when invoking the listener
34+
* @returns {import('react-native').NativeEventSubscription}
35+
*/
36+
on(event, callback, context) {
2137
switch (event) {
2238
case 'data':
23-
this._eventEmitter.addListener('data', (evt) => {
24-
if (evt.id !== this._id) return;
25-
const bufferTest = Buffer.from(evt.data, 'base64');
26-
callback(bufferTest);
27-
});
28-
break;
39+
return this._eventEmitter.addListener(
40+
'data',
41+
(evt) => {
42+
if (evt.id !== this._id) return;
43+
const bufferTest = Buffer.from(evt.data, 'base64');
44+
callback(bufferTest);
45+
},
46+
context
47+
);
2948
case 'error':
30-
this._eventEmitter.addListener('error', (evt) => {
31-
if (evt.id !== this._id) return;
32-
callback(evt.error);
33-
});
34-
break;
49+
return this._eventEmitter.addListener(
50+
'error',
51+
(evt) => {
52+
if (evt.id !== this._id) return;
53+
callback(evt.error);
54+
},
55+
context
56+
);
3557
default:
36-
this._eventEmitter.addListener(event, (evt) => {
37-
if (evt.id !== this._id) return;
38-
callback();
39-
});
40-
break;
58+
return this._eventEmitter.addListener(
59+
event,
60+
(evt) => {
61+
if (evt.id !== this._id) return;
62+
callback();
63+
},
64+
context
65+
);
4166
}
4267
}
4368

44-
off(event, callback) {
45-
this._eventEmitter.removeListener(event, callback);
69+
off() {
70+
console.warn(
71+
'TCPSocket.off() is deprecated and produces no effect, please use the listener remove() method instead.'
72+
);
4673
}
4774

4875
connect(options, callback) {

0 commit comments

Comments
 (0)