From 3b3b480b726533545b535998980e4318f86414d4 Mon Sep 17 00:00:00 2001 From: saqut Date: Sat, 10 Feb 2024 22:30:12 +0300 Subject: [PATCH] =?UTF-8?q?README.md=20G=C3=BCncelle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 293 +----------------------------------------------------- 1 file changed, 1 insertion(+), 292 deletions(-) diff --git a/README.md b/README.md index 6cae588..dea4e6f 100644 --- a/README.md +++ b/README.md @@ -18,295 +18,4 @@ Bunların dışında hassas verilerin soket üzerinden iletilmesi şimdilik öne ## Proje tarafından uygulanan load balance teknolojisi -![image](https://git.saqut.com/saqut/storage/raw/branch/master/Diagram1.png) - -# Geliştirici Dökümantasyonu - -## Kurulum - -### Proje ortamına kurulumu - -```html - -``` - -### Geliştirme ortamına kurulumu - -```javascript -const mwse = new MWSE({ - endpoint: "wss://ws.saqut.com/" // MSWS kurulu sunucu adresi -}); -mwse.scope(async () => { - // Bağlantı sağlandığında burası tetiklenir -}) -``` - -### Kendi bağlantı kimliğini öğrenme - -```javascript -mwse.scope(async () => { - let me = mwse.peer('me'); // Kendi bağlantınız üzerinde işlem yaparken `me` olarak bahsedersiniz - console.log(me.socketId); // Her eşin tekil bir socketIdsi vardır -}) -``` - - -### Sanal Adres ayırma / yeniden ayırma / kaldırma -```javascript -mwse.scope(async () => { - let me = mwse.peer('me'); - - /** - * Sanal adresler size veri gönderilmek istendiğinde veya etkileşime - * geçilmesi istendiğinde ona socketId gibi bir UUID yerine sizi temsil eden daha kısa - * ip adresi, sayı veya kısa bir kod ile aynı şeyleri yapmanıza olanak tanır. - * Aynı anda hem sanal ip adres, sayı ve kısa koduna sahip olabilirsiniz - * ancak aynı türden temsil koduna (mesela kısa koddan) birden fazla sahip olamazsınız - * Yeni bir bağlantı daha açmanız gerekir - **/ - - // Bağlantınıze özel sanal tekil ip adresi kaynağı ayırın - let ipadress = await me.virtualPressure.allocAPIPAddress(); - - // Bağlantınıze özel sanal tekil numara kaynağı ayırın - let numberaddress = await me.virtualPressure.allocAPNumber(); - - // Bağlantınıze özel sanal kod kaynağı ayırın - let shortcodeadress = await me.virtualPressure.allocAPShortCode(); - - // Bütün bu kaynakları yenileriyle değiştirmek için - // her birinin ayrı ayrı yeniden alma işlevleri vardır - // Bir adresi yenilediğinizde artık eski adres kullanılmaz olur - me.virtualPressure.reallocAPIPAddress(); - me.virtualPressure.reallocAPNumber(); - me.virtualPressure.reallocAPShortCode(); - - // Bütün bu kaynakları kaldırmak için her birinin ayrı ayrı - // bırakma işlevi vardır - // Bir adresi kullanmadığınızda artık bu adreslerden size - // ulaşılamaz olursunuz - await me.virtualPressure.releaseAPIPAddress(); - await me.virtualPressure.releaseAPNumber(); - await me.virtualPressure.releaseAPShortCode(); - - await me.virtualPressure.queryAPIPAddress(); - await me.virtualPressure.queryAPNumber(); - await me.virtualPressure.queryAPShortCode(); -}) -``` - -### Farklı bir eşe erişme - -```javascript -mwse.scope(async () => { - let peer = mwse.peer('325a8f7f-eaaf-4c21-855e-9e965c0d5ac9') // Diğer eşin socketId'sini belirtiyoruz - let me = mwse.peer('me'); - - // Eşin ulaşılabilir (online) olup olmadığını verir - let isOnline = await peer.isReachable(); - - if(isOnline) - { - // İleitşim kurmak için istek gönderiyoruz - await peer.requestPair(); - } - - // Bize gönderilecek olan istekleri dinliyoruz - me.on('request/pair', peer => { - // İstek gönderen kullanıcının bilgileri peer içinde bulunur - // iletişime devam etmek için isteği kabul ediyoruz - peer.acceptPair(); - // veya istemiyorsak reddediyoruz - peer.rejectPair(); - }) - - // Karşımızdaki kullanıcının ne cevap verdiğini - // anlamak için sistem ayrı ayrı cevaplar üretir - - // Kabul ettiyse accept eventini tetikler - me.on('accepted/pair', peer => { - // İstek gönderen kullanıcının bilgileri peer içinde bulunur - }) - - // Reddettiyse veya iletişimi sonlandırmışsa - // end eventi tetiklenir - me.on('end/pair', peer => { - // Kullanıcının bilgileri peer içinde bulunur - }) -}) -``` - -Eğer uygulamanızda bu şekilde bir erişim metodolojisi kullanmak istemiyorsanız -pair sistemini elle kapatabilirsiniz - -```javascript -mwse.scope(async () => { - let me = mwse.peer('me'); - - // Tüm kullanıcılar size mesaj iletebilir - await peer.disablePairAuth(); - - // Sadece eşleşmiş kullanıcılar size mesaj iletebilir - await peer.enablePairAuth(); -}) -``` -## Tünelleme ile mesajlaşma - -MWSE üzerinde karşılıklı mesajlaşma için 2 - metodoloji bulunur bunlardan birisi serbest mesajlaşmadır ve - bu şekilde çalışır -```javascript -mwse.scope(async () => { - let me = mwse.peer('325a8f7f-eaaf-4c21-855e-9e965c0d5ac9'); - - // Tüm kullanıcılar size mesaj iletebilir - await peer.disablePairAuth(); - - // Bu şekilde serbest bir şekilde herhangi bir zamanda karşılıksız mesaj iletebilirsiniz - peer.send({ - text: "Good morning" - }) - - // Kullanıcı her hangi bir mesaj gönderdiğinde burası tetiklenir - peer.on('message', message => { - if(text.message == "Good morning") - { - // Eğer mesaj için bir cevap bekliyorsa cevap veriyoruz - peer.send("You are welcome"); - }else{ - // Ancak mesaj önceden gönderdiğimiz isteğin cevabıysa görüntülüyoruz - console.log("Reply is :", message) // --> You are welcome - } - }) -}) -``` -2. yöntem ise el sıkışmalı mesajlaşmadır ve gönderdiğiniz bir mesaja verilen karşılık olarak -sistem, gelen mesajın gönderdiğiniz hangi mesaja karşılık olarak gönderildiğini tuttuğu için -request/response şeklinde ilerleyebilir - -```javascript -mwse.scope(async () => { - let peer = mwse.peer('325a8f7f-eaaf-4c21-855e-9e965c0d5ac9'); - let me = mwse.peer('me'); - - // Tüm kullanıcılar size mesaj iletebilir - await me.disablePairAuth(); - - // Bizden istenecek veriler için önceden cevapları hazırlıyoruz - me.on('request', ({body, response}) => { - switch(body.message) - { - case "Good morning":{ - // do anything... - response("You are welcome") - break; - } - } - }) - - - // Bu şekilde serbest bir şekilde herhangi bir zamanda karşılıksız mesaj iletebilirsiniz - let response = await peer.request({ - message: "Good morning" - }); - - console.log(response) // response ---> You are welcome -}) -``` - -Bu şekilde hem okunabilirlik artar hemde mesajlar karşılıklı olarak etki-tepki şeklinde ilerler - ----- - - -### Oda kurma ve kapatma - -Oda sistemi kullanıcıların bir araya gelerek, tek seferde bir grubun -toplu olarak birbirleriyle mesajlaşabileceği bir yapıdır. -Kişiler birbirlerini bulabilir, toplu mesajlar iletebilirler, odaya -katılabilir veya ayrılabilirler - - -Odanın ayarlarını, odayı ilk oluşturan kişi belirler ve oda bir kez oluşturulduğunda yeniden aynı isimle oda açılamaz -Oda türü (joinType) herkese açık `free`, davet ile `invite`, şifreli `password` veya herkese kapalı `lock` olabilir. - -```javascript - -mwse.scope(async () => { - - let room = mwse.room({ - name: "Oda ismi", // odanın görünür ismi - description: "Oda açıklaması", // odanın görünecek ismi - joinType: "free", // herkese açık oda - credential: "****", // varsa şifre - notifyActionInvite: false, // yeni biri katılmak istediğinde tüm peerlere haber iletme özelliği - notifyActionJoined: true, // yeni biri katıldığında tüm peerlere haber iletir - notifyActionEjected: true, // Biri odadan ayrıldığında tüm peerlere haber iletir - ifexistsJoin: false // true ayarlanırsa, oluşturma aşamasında oda zaten var yanıtı alırsa hata vermek yerine odaya katılır - }); - - // Verilen isime ait odaya katılmak için bu komut yeterlidir - await room.join(); // --> odaya katılırken sorun oluşursa hata fırlatır - - // Verilen ayarlara sahip odayı oluşturmak için aşağıdaki komut yeterlidir - await room.createRoom(); // -> oda oluştururken sorun oluşursa hata fırlatır - - // Var olan bir odadan ayrılmak için bu komut kullanılabilir - await room.eject(); - - // İçinde bulunduğu odanın tüm eşlerinin idsini verir - let peers = await room.fetchPeers(); -}); -``` - -### Oda içerisinde iletişim - -Odaya katıldıktan sonra katılan kişiler `room` üzerinden mesaj iletebilirsiniz, verilen her mesajı sistem istisnasız tüm oda katılımcılarına iletmekten sorumludur -Oda içerisindeki kişiler ile oda içindeki kişilerin listesini alarak özel iletişimede geçebilirsiniz ancak aynı odadaki kişiler sistem tarafında yinede güvenilir kabul edilmez -Sistem pairAuth güvenliği kapalı olan kişilere mesajlar iletir ancak açık olan kullanıcıların her biri için ayrı ayrı eşleşme isteği göndermelisiniz - -```javascript - -mwse.scope(async () => { - - let room = mwse.room({ - name: "Oda ismi", // odanın görünür ismi - description: "Oda açıklaması", // odanın görünecek ismi - joinType: "free", // herkese açık oda - notifyActionJoined: true, // yeni biri katıldığında tüm peerlere haber iletir - ifexistsJoin: false // true ayarlanırsa, oluşturma aşamasında oda zaten var yanıtı alırsa hata vermek yerine odaya katılır - }); - - // Verilen ayarlara sahip odayı oluşturmak için aşağıdaki komut yeterlidir - await room.createRoom(); // -> oda oluştururken sorun oluşursa hata fırlatır - - // Oda içerisinde mesaj gönderildiğinde gönderilen paketi dinlemek için aşağıdaki komut kullanılabilir - room.on('message', message => { - // Odaya `message` paketi iletildi - }) - - // Odaya yeni birisi katıldığında haber almak için aşağıdaki komut kullanılabilir - room.on('join', peer => { - // Odaya katılan kişinin bilgisi peerde tutulur - // Odaya katılan kişiyle bağlantı kurup, oda dışında kendisiyle iletişimede geçebilirsiniz - peer.requestPair(); - }) - - // Odaya birisi ayrıldığında haber almak için aşağıdaki komut kullanılabilir - room.on('eject', peer => { - // Odadan ayrılan kişinin bilgisi peerde tutulur - }) - - // Odadaki herkese mesaj iletmek için room içerisindeki send komutu kullanılabilir - room.send({ - message: "Good year !" - }); - - // Oda kapatıldığında close tetiklenir - room.on('close', () => { }) -}); -``` - -### Odayı kapatma - -Odalar odaya ait olan bağlantılar üzerine kurulur, tüm bağlantılar odadan çıktığında oda otomatik olarak kapatılır \ No newline at end of file +![image](https://git.saqut.com/saqut/storage/raw/branch/master/Diagram1.png) \ No newline at end of file