Skip to content

Commit 91fe718

Browse files
authored
feat: receive realtime event (#6)
* feat: receive realtime event * chore: typo
1 parent a1d7154 commit 91fe718

File tree

7 files changed

+214
-41
lines changed

7 files changed

+214
-41
lines changed

example/demo.js

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
const featureProbe = require('../dist/featureprobe-server-sdk-node.min');
17+
const featureProbe = require('../dist/index.js');
1818
const pino = require('pino');
1919

2020
const user = new featureProbe.FPUser().with('userId', '00001');
@@ -40,29 +40,30 @@ const FEATURE_PROBE_SERVER_URL = 'https://featureprobe.io/server'; // for featu
4040
const FEATURE_PROBE_SERVER_SDK_KEY = 'server-9b8b98cf444328ff1280a0757b26ec0abdacba76'; // change me
4141

4242
const fpClient = new featureProbe.FeatureProbe({
43-
remoteUrl: FEATURE_PROBE_SERVER_URL,
44-
serverSdkKey: FEATURE_PROBE_SERVER_SDK_KEY,
45-
refreshInterval: 5000,
46-
// logTransport: pino(logToFile) // uncomment this line to try out pino transport, by default a general pino client will be used
43+
remoteUrl: FEATURE_PROBE_SERVER_URL,
44+
serverSdkKey: FEATURE_PROBE_SERVER_SDK_KEY,
45+
refreshInterval: 5000,
46+
// logTransport: pino(logToFile) // uncomment this line to try out pino transport, by default a general pino client will be used
4747
});
4848

4949
const main = async () => {
50-
// wait until the repo has been initialized
51-
// await fpClient.start();
52-
// add time limit
53-
await fpClient.start(1000);
54-
console.log('FeatureProbe evaluation boolean type toggle result is:', fpClient.booleanValue('campaign_allow_list', user, false));
55-
console.log('FeatureProbe evaluation boolean type toggle detail is:', fpClient.booleanDetail('campaign_allow_list', user, false));
56-
console.log();
57-
console.log('FeatureProbe evaluation string type toggle result is:', fpClient.stringValue('string_toggle_key', user, 'default'));
58-
console.log('FeatureProbe evaluation string type toggle detail is:', fpClient.stringDetail('string_toggle_key', user, 'default'));
59-
console.log();
60-
console.log('FeatureProbe evaluation number type toggle result is:', fpClient.numberValue('promotion_campaign', user2, 0));
61-
console.log('FeatureProbe evaluation number type toggle detail is:', fpClient.numberDetail('promotion_campaign', user2, 0));
62-
console.log();
63-
console.log('FeatureProbe evaluation json type toggle result is:', fpClient.jsonValue('json_toggle_key', user, {}));
64-
console.log('FeatureProbe evaluation json type toggle detail is:', fpClient.jsonDetail('json_toggle_key', user, {}));
65-
await fpClient.close();
50+
// wait until the repo has been initialized
51+
// await fpClient.start();
52+
// add time limit
53+
await fpClient.start(1000);
54+
console.log('FeatureProbe evaluation boolean type toggle result is:', fpClient.booleanValue('campaign_allow_list', user, false));
55+
console.log('FeatureProbe evaluation boolean type toggle detail is:', fpClient.booleanDetail('campaign_allow_list', user, false));
56+
console.log();
57+
console.log('FeatureProbe evaluation string type toggle result is:', fpClient.stringValue('string_toggle_key', user, 'default'));
58+
console.log('FeatureProbe evaluation string type toggle detail is:', fpClient.stringDetail('string_toggle_key', user, 'default'));
59+
console.log();
60+
console.log('FeatureProbe evaluation number type toggle result is:', fpClient.numberValue('promotion_campaign', user2, 0));
61+
console.log('FeatureProbe evaluation number type toggle detail is:', fpClient.numberDetail('promotion_campaign', user2, 0));
62+
console.log();
63+
console.log('FeatureProbe evaluation json type toggle result is:', fpClient.jsonValue('json_toggle_key', user, {}));
64+
console.log('FeatureProbe evaluation json type toggle detail is:', fpClient.jsonDetail('json_toggle_key', user, {}));
65+
66+
await fpClient.close();
6667
};
6768

6869
main().then(() => console.log('Enjoy using FeatureProbe!'));

package-lock.json

Lines changed: 137 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
"@types/semver": "^7.3.12",
6969
"isomorphic-fetch": "^3.0.0",
7070
"pino": "^7.10.0",
71+
"socket.io-client": "^4.5.3",
7172
"ts-node": "^10.9.1"
7273
}
7374
}

src/Event.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,9 @@ export class EventRecorder {
7979
}
8080

8181
constructor(serverSdkKey: string,
82-
eventsUrl: URL | string,
83-
flushInterval: number,
84-
logger?: pino.Logger) {
82+
eventsUrl: URL | string,
83+
flushInterval: number,
84+
logger?: pino.Logger) {
8585
this._serverSdkKey = serverSdkKey;
8686
this._eventsUrl = new URL(eventsUrl).toString();
8787
this._closed = false;
@@ -197,7 +197,7 @@ export class EventRecorder {
197197
// cred: https://stackoverflow.com/questions/47157428/how-to-implement-a-pseudo-blocking-async-queue-in-js-ts
198198
class AsyncBlockingQueue<T> {
199199
private _promises: Promise<T>[];
200-
private _resolvers: ( (t: T) => void )[];
200+
private _resolvers: ((t: T) => void)[];
201201

202202
constructor() {
203203
this._resolvers = [];

0 commit comments

Comments
 (0)