README.md Güncelle
This commit is contained in:
parent
9325bf645f
commit
3b3b480b72
293
README.md
293
README.md
|
@ -18,295 +18,4 @@ Bunların dışında hassas verilerin soket üzerinden iletilmesi şimdilik öne
|
||||||
|
|
||||||
## Proje tarafından uygulanan load balance teknolojisi
|
## Proje tarafından uygulanan load balance teknolojisi
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
# Geliştirici Dökümantasyonu
|
|
||||||
|
|
||||||
## Kurulum
|
|
||||||
|
|
||||||
### Proje ortamına kurulumu
|
|
||||||
|
|
||||||
```html
|
|
||||||
<script src="https://ws.saqut.com/script"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
### 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
|
|
Loading…
Reference in New Issue