node-srt/examples/async-srt.js

26 lines
564 B
JavaScript
Raw Permalink Normal View History

Worker-based Async API with await/Promise support (or plain callbacks) (#6) * fix lint errors in eslint config :) * index.d.s: add /* eslint-disable @typescript-eslint/triple-slash-reference */ * improve eslint calling script * add async-worker version of the SRT JS API with await/Promise support + potentially out-of-order RPC-back/result-dequeuing is possible with a type of call-ID generator and callback-map that we prototyped (but not used atm since the worker is only doing sync/blocking internally with the current SRT lib binding). * add various examples for async API ("classic" callbacks / Promise / await) * add .eslintignore (should go with commit where we just call "eslint .") * index.js: add missing semi * async.js: fix method name litteral in epollUWait * async.js: allow for accept method to use a timeout opt (defaults to false), and a custom timeout value option (default to default timeout), which can potentially be set differently than the general default timeout. + make the timeout value a static class property so that it can be user-defined module-load wide. defaults to constant in module top scope. * async.js: fix for a rejected promise, make sure we don't resolve anymore + add a custom timeout value argument to _createAsyncWorkPromise * async.js: rm an experiment * fix a lint error in example * add types for async api and fix some details on binding API types * export async API to index * async.js: add some missing docs for private methods * include async types in index
2020-08-03 09:54:26 +02:00
"use strict";
const { AsyncSRT } = require('../src/async.js');
const asyncSrt = new AsyncSRT();
asyncSrt.createSocket(false, (result) => {
console.log('createSocket:', result);
const socket = result;
asyncSrt.bind(socket, "0.0.0.0", 1234, (result) => {
if (result !== 0) {
console.log('Failed bind');
} else {
console.log('Bind success');
asyncSrt.listen(socket, 2, (result) => {
if (!result) {
console.log("Listen success");
} else {
console.log(result);
}
});
}
});
});