Comments (1)
kari
import { SimplePool, type Event, type Filter, type Sub } from 'nostr-tools';
const defaultRelays = [
'wss://relay.damus.io',
'wss://relay.snort.social',
'wss://eden.nostr.land'
];
// relay取得する仕組みあとで
class RelayEventer<T extends unknown[]> {
private event!: (...args: T) => void;
constructor(private subs: Sub) {}
on(callback: (...args: T) => void) {
this.event = callback;
}
emit(...args: T) {
this.event?.(...args);
}
unsub() {
this.subs.unsub();
}
}
class RelayPool {
pool: SimplePool;
relays: string[] = defaultRelays;
constructor() {
this.pool = new SimplePool();
}
subscribe(kind: number, filter: Filter = {}) {
const subs = this.pool.sub(this.relays, [{ kinds: [kind], ...filter }]);
const subEE = new RelayEventer<[Event]>(subs);
subs.on('event', (event: Event) => {
subEE.emit(event);
});
subs.on('eose', () => subs.unsub());
return subEE;
}
async get(kind: number, filter: Filter = {}) {
return new Promise<Event>((resolve) => {
const sub = this.subscribe(kind, filter);
sub.on((event) => {
resolve(event);
sub.unsub();
});
});
}
}
export const relayPool = new RelayPool();
from astraea.
Related Issues (20)
- リアクションの絵文字ピッカーの位置を直す
- umami proxy HOT 1
- テーマ判定おかしい HOT 1
- ハッシュタグおかしいかも HOT 1
- 小さい画面でのOGPの横幅 HOT 2
- プロフィールにbadgesを表示する HOT 1
- レイアウト調整 HOT 1
- 小さい画面のログインボタン HOT 1
- プロフィールが表示されていない HOT 2
- カスタム絵文字リアクション HOT 2
- アナリティクスをdevモードで読み込まない HOT 1
- LinterのCI
- OGP表示の修正 HOT 1
- Astraea自体のOGPを設定する
- daisyuiの変更が多いし微妙に使いづらいのでskeltonに変える?
- UI調整 HOT 1
- publish周りの問題 HOT 1
- svelte-i18nを辞めたいかも
- nostr-toolsからndkに
- tailwindからunocssに変える,daisyは使えない
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from astraea.