mwsepeer Güncelle

saqut 2025-12-07 13:19:49 +03:00
parent b3549d226a
commit 59df9607f2
1 changed files with 96 additions and 2 deletions

@ -54,7 +54,7 @@ otherPeer.on('disconnect', () => {
await otherPeer.isReachable()
```
## Peerler arasında kanal oluşturma
## Peerler arasında tünelleme
MWSE peerler arasında tünelleme kurar ve böylece arada bir sunucu olduğunu developerlara unutturmayı hedefler. Buradaki amaç iki peer arasındaki iletişimi request/response şeklinde kurabilmektir.
@ -102,4 +102,98 @@ let answer = await peer2.request({
console.log(answer) // --> 6
```
Burdaki developerin çözmesi gereken sorunlardan birisi eğer peer2 requeste cevap veremezse algoritmanın Promise'yi hiç bir zaman resolve etmeyeceğidir. Bu durumda peer2 requesti gittiğinde eğer peer2 soketten düşerse algoritma sonsuza kadar bekleyecektir
Burdaki developerin çözmesi gereken sorunlardan birisi eğer peer2 requeste cevap veremezse algoritmanın Promise'yi hiç bir zaman resolve etmeyeceğidir. Bu durumda peer2 requesti gittiğinde eğer peer2 soketten düşerse algoritma sonsuza kadar bekleyecektir
## Peerler arası güvenlik
Eğer senaryonuzda peerler arasında rastgele mesajlaşma yoksa peerler arasındaki iletişimi koşullayabilirsiniz. MWSE peerlerin güvenliği için `pair-auth` sistemi kullanır, bu sistem eşleşme talebi iletilmesi, talebin karşı tarafça onaylanması ve opsiyonel olarak oturumun sonlandırılmasını içerir
```
Peer1 ---Pair Request---> Peer2
Peer1 <---Accepted Pair-- Peer2
```
Pair sistemi Peerlere özeldir ve tüm peerler etkileşime geçmek için pair-auth istemeyebilir.
Bunu her peer için `enablePairAuth()` `disablePairAuth()` sistemleri ile birlikte açıp kapatabilirsiniz.
Bir peer pair-auth sistemi kullanıyorsa ona göndermek üzere ilettiğiniz tüm mesajları MWSE görmezden gelir. Sadece onunda dahil olduğu bir grub içerisinden herkese ileteceğiniz mesajlarını gönderilir.
pair-auth sistemini kullanan bir peer'a ulaşmak için öncelikle `requestPair()` metodunu kullanara eşleşme talep etmeli kabul edildiği takdirde iletişime geçmelisiniz
Diğer yandan pair-auth kullanan peer; gelen talepleri kabul etmek için `request/pair` eventini dinleyebilir gelen talepleri takip eder ve `acceptPair()` ile onaylar, `rejectPair()` ile reddeder veya `endPair()` ile var olan eşlemeyi sonlandırabilir
### requestPair()
```js
// Odaya katılan peerleri izle
room.on('join', peer => {
// Katılan peere direkt mesaj göndermek için eşleşme isteği gönder
peer.requestPair();
// Peer özelinde kabul edilip edilmediğini takip edebilirsiniz
peer.on('accepted/pair', peer => {
// Peer eşleşmeyi kabul etti
})
peer.on('end/pair', peer => {
// Peer eşleşmeyi reddetti veya sonlandırdı
})
});
// Bunun yanı sıra tüm sistem genelinde eşleşmeyi takip edebilirsiniz
mwse.on('accepted/pair', peer => {
// Peer eşleşmeyi kabul etti
})
mwse.on('end/pair', peer => {
// Peer eşleşmeyi reddetti veya sonlandırdı
})
```
### Accept pair / Reject pair / Endpair
```js
// Gelen pair isteklerini genelde dinleyebilirsiniz
mwse.on('request/pair', peer => {
// Peer eşleşme isteği gönderdi
})
// Veya peer özelinde eşleşme isteğini dinleyebilirsiniz
peer2.on('request/pair', peer => {
// Peer eşleşme isteği gönderdi
});
// Burda eşleşme istekleri sırasında yapabileceğiniz 2 şey vardır kabul etmek veya reddetmek
// Eşleşme isteğini kabul etmek için acceptPair kullanılır
await peer.acceptPair();
// Eşleşme isteğini reddetmek etmek için acceptPair kullanılır
await peer.rejectPair();
// Bir isteği kabul ettikten bir süre sonra tekrar eşleşme listesinden çıkarabilirsiniz
// Burda endPair kullanılabilir
// Bu işlem peerden direkt gelen tüm mesajların engellenmesine neden olur
await peer.endPair();
```
#### Önemli not
Bir eşleşmeyi onaylamak onu güvenilen listesine eklemeniz için eşleşme talebinin iletilmesine gerek yoktur. Bir peer diğer peeri olduğu gibi onaylayabilir
Aşağıdaki kod bir peerin odanın içerisinde bulunan tüm peerlerin özeldende mesaj iletmesini onaylamasına sebep olur
```js
room.on('join', peer => {
peer.acceptPair();
});
for(let peer of await room.fetchPeers()){
peer.acceptPair();
};
// room odasındaki herkes pair-auth onaylanmıştır
```
Bunun yan etkisi olara odaya katılan herkese bu peer tarafından onaylandığı haberide gönderilecektir