Skip to content

Room Chat

Room Chat, gercek zamanli oda bazli sohbet sistemidir. Bir odaya katilir, mesaj gonderir/alir ve mesaj gecmisini sorgulayabilirsiniz.

roomChat.join

Bir sohbet odasina katilir ve RoomChatHandle dondurur.

roomName opsiyoneldir:

  • Verilirse: Host tarafinda otomatik olarak miniApp ID ile prefixlenir (ornegin "lobby""com.example.game_lobby"). Bu sayede farkli oyunlarin ayni isimdeki odalari birbirine karismaz.
  • Verilmezse: Aktif match'ten otomatik turetilir (ornegin "match_abc123"). Bu durumda persistence otomatik olarak false yapilir cunku match sohbetleri gecicidir.
js
// Opsiyonel: roomName ile (lobby, waiting-room vs.)
const chat = await gameTegra.roomChat.join('lobby')

// Opsiyonel: ek parametrelerle
const chat = await gameTegra.roomChat.join('match-room', {
  persistence: true,  // Mesajlar kalici olsun mu
  hidden: false       // Kullanici presence'da gorunsun mu
})

// roomName olmadan — aktif match'ten otomatik turetilir
const chat = await gameTegra.roomChat.join()
csharp
var chat = await gameTegra.RoomChat.Join("lobby");

// veya ek parametrelerle
var chat = await gameTegra.RoomChat.Join("match-room",
    persistence: true,
    hidden: false
);

// roomName olmadan
var chat = await gameTegra.RoomChat.Join();
gdscript
var chat = await gameTegra.roomChat.join("lobby")

# veya ek parametrelerle
var chat = await gameTegra.roomChat.join("match-room", true, false)

# roomName olmadan
var chat = await gameTegra.roomChat.join()

Parametreler:

AlanTipZorunluVarsayilanAciklama
roomNamestringHayir-Oda adi. Verilmezse aktif match'ten turetilir. Host tarafinda miniAppId ile prefixlenir.
persistencebooleanHayirtrueMesajlar kalici olarak saklansin mi. Match-bazli odalarda otomatik false olur.
hiddenbooleanHayirfalseKullanici presence listesinde gizli mi

Donus Tipi: RoomChatHandle

Room Name Isolation

Room ismi host tarafinda otomatik olarak miniApp ID ile prefixlenir. Yani "lobby" yazmak yeterlidir — farkli oyunlarin lobby'leri birbirine karismaz.

Match Sohbetleri

roomName vermeden roomChat.join() cagirdiginizda, aktif match otomatik algilanir ve gecici bir sohbet odasi olusturulur (persistence: false). Match bittiginde mesajlar kaybolur.


openMatchChat

Match icindeki oyuncular icin grup sohbet ekrani acar. Bu method Flutter tarafinda native sohbet UI'i gosterir.

room_name opsiyoneldir:

  • Verilirse: miniApp ID ile prefixlenir, persistence: true olur.
  • Verilmezse: Aktif match'ten otomatik turetilir, persistence: false olur.
js
// roomName olmadan — aktif match'ten otomatik turetilir
await gameTegra.openMatchChat()

// roomName ile (ornegin lobby)
await gameTegra.openMatchChat({ room_name: 'lobby' })
csharp
await gameTegra.OpenMatchChat();

// roomName ile
await gameTegra.OpenMatchChat(roomName: "lobby");
gdscript
await gameTegra.open_match_chat()

# roomName ile
await gameTegra.open_match_chat({ "room_name": "lobby" })

Parametreler:

AlanTipZorunluVarsayilanAciklama
room_namestringHayir-Oda adi. Verilmezse aktif match ID'den turetilir.

Donus Tipi: { success: boolean, room_name: string, player_count: number }


RoomChatHandle

roomChat.join()'den donen nesne. Oda ile etkilesim icin kullanilir.

Ozellikler

OzellikTipAciklama
roomNamestringOda adi (resolve edilmis, bos olabilir)
channelIdstringChannel ID
streamKeystringStream key

send

Odaya mesaj gonderir.

js
// String mesaj
await chat.send('Merhaba!')

// Nesne mesaj
await chat.send({
  type: 'game_action',
  action: 'attack',
  target: 'player2'
})
csharp
await chat.SendAsync("Merhaba!");

// veya nesne
await chat.SendAsync(new Dictionary<string, object> {
    { "type", "game_action" },
    { "action", "attack" }
});
gdscript
await chat.send("Merhaba!")

# veya nesne
await chat.send({
    "type": "game_action",
    "action": "attack"
})

Parametreler:

AlanTipZorunluAciklama
contentanyEvetGonderilecek mesaj icerigi

getHistory

Mesaj gecmisini getirir.

js
const history = await chat.getHistory(50)

// Sayfalama ile
const history = await chat.getHistory(20, 'cursor-token', true)
csharp
var history = await chat.GetHistoryAsync(limit: 50);

// Sayfalama ile
var history = await chat.GetHistoryAsync(
    limit: 20,
    cursor: "cursor-token",
    forward: true
);
gdscript
var history = await chat.get_history(50)

# Sayfalama ile
var history = await chat.get_history(20, "cursor-token", true)

Parametreler:

AlanTipZorunluVarsayilanAciklama
limitnumberHayir50Getirilecek mesaj sayisi
cursorstringHayir""Sayfalama cursor'u
forwardbooleanHayirfalseIleri yonde mi sayfalanacak

Event Dinleme

message

Odaya yeni bir mesaj geldiginde tetiklenir.

js
const unsub = chat.on('message', (data) => {
  console.log('Yeni mesaj:', data)
})

// Dinlemeyi birak
unsub()
csharp
Action unsub = chat.On("message", (data) => {
    Debug.Log($"Yeni mesaj: {data}");
});

// Dinlemeyi birak
unsub();
gdscript
var unsub = chat.on("message", func(data):
    print("Yeni mesaj: ", data)
)

# Dinlemeyi birak: unsub.call()

presence

Kullanici giris/cikis event'leri.

js
chat.on('presence', (data) => {
  console.log('Presence degisikligi:', data)
})
csharp
chat.On("presence", (data) => {
    Debug.Log($"Presence: {data}");
});
gdscript
chat.on("presence", func(data):
    print("Presence: ", data)
)

leave

Sohbet odasindan ayrilir ve tum listener'lari temizler.

js
await chat.leave()
csharp
await chat.LeaveAsync();
gdscript
await chat.leave()

Tam Ornek

js
// Odaya katil (roomName opsiyonel)
const chat = await gameTegra.roomChat.join('game-lobby')

// Mesajlari dinle
chat.on('message', (msg) => {
  console.log(`[${msg.sender}]: ${msg.content}`)
})

// Presence degisikliklerini dinle
chat.on('presence', (event) => {
  console.log('Oyuncu giris/cikis:', event)
})

// Gecmis mesajlari al
const history = await chat.getHistory(20)
console.log('Son 20 mesaj:', history)

// Mesaj gonder
await chat.send({ text: 'Oyun baslasin!' })

// Odadan ayril
await chat.leave()

Match Sohbeti (Otomatik)

js
// roomName vermeden — aktif match otomatik algilanir
const chat = await gameTegra.roomChat.join()

chat.on('message', (msg) => {
  console.log(`[${msg.sender}]: ${msg.content}`)
})

await chat.send({ text: 'GG!' })

// veya native UI ile
await gameTegra.openMatchChat()