From 59df9607f2eb5a7f934c527cb50f130225988fbf Mon Sep 17 00:00:00 2001 From: saqut Date: Sun, 7 Dec 2025 13:19:49 +0300 Subject: [PATCH] =?UTF-8?q?mwsepeer=20G=C3=BCncelle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mwsepeer.md | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 96 insertions(+), 2 deletions(-) diff --git a/mwsepeer.md b/mwsepeer.md index 1edcdd7..e704c95 100644 --- a/mwsepeer.md +++ b/mwsepeer.md @@ -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 \ No newline at end of file +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 \ No newline at end of file