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 durumdapersistenceotomatik olarakfalseyapilir cunku match sohbetleri gecicidir.
// 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()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();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:
| Alan | Tip | Zorunlu | Varsayilan | Aciklama |
|---|---|---|---|---|
| roomName | string | Hayir | - | Oda adi. Verilmezse aktif match'ten turetilir. Host tarafinda miniAppId ile prefixlenir. |
| persistence | boolean | Hayir | true | Mesajlar kalici olarak saklansin mi. Match-bazli odalarda otomatik false olur. |
| hidden | boolean | Hayir | false | Kullanici 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: trueolur. - Verilmezse: Aktif match'ten otomatik turetilir,
persistence: falseolur.
// roomName olmadan — aktif match'ten otomatik turetilir
await gameTegra.openMatchChat()
// roomName ile (ornegin lobby)
await gameTegra.openMatchChat({ room_name: 'lobby' })await gameTegra.OpenMatchChat();
// roomName ile
await gameTegra.OpenMatchChat(roomName: "lobby");await gameTegra.open_match_chat()
# roomName ile
await gameTegra.open_match_chat({ "room_name": "lobby" })Parametreler:
| Alan | Tip | Zorunlu | Varsayilan | Aciklama |
|---|---|---|---|---|
| room_name | string | Hayir | - | 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
| Ozellik | Tip | Aciklama |
|---|---|---|
| roomName | string | Oda adi (resolve edilmis, bos olabilir) |
| channelId | string | Channel ID |
| streamKey | string | Stream key |
send
Odaya mesaj gonderir.
// String mesaj
await chat.send('Merhaba!')
// Nesne mesaj
await chat.send({
type: 'game_action',
action: 'attack',
target: 'player2'
})await chat.SendAsync("Merhaba!");
// veya nesne
await chat.SendAsync(new Dictionary<string, object> {
{ "type", "game_action" },
{ "action", "attack" }
});await chat.send("Merhaba!")
# veya nesne
await chat.send({
"type": "game_action",
"action": "attack"
})Parametreler:
| Alan | Tip | Zorunlu | Aciklama |
|---|---|---|---|
| content | any | Evet | Gonderilecek mesaj icerigi |
getHistory
Mesaj gecmisini getirir.
const history = await chat.getHistory(50)
// Sayfalama ile
const history = await chat.getHistory(20, 'cursor-token', true)var history = await chat.GetHistoryAsync(limit: 50);
// Sayfalama ile
var history = await chat.GetHistoryAsync(
limit: 20,
cursor: "cursor-token",
forward: true
);var history = await chat.get_history(50)
# Sayfalama ile
var history = await chat.get_history(20, "cursor-token", true)Parametreler:
| Alan | Tip | Zorunlu | Varsayilan | Aciklama |
|---|---|---|---|---|
| limit | number | Hayir | 50 | Getirilecek mesaj sayisi |
| cursor | string | Hayir | "" | Sayfalama cursor'u |
| forward | boolean | Hayir | false | Ileri yonde mi sayfalanacak |
Event Dinleme
message
Odaya yeni bir mesaj geldiginde tetiklenir.
const unsub = chat.on('message', (data) => {
console.log('Yeni mesaj:', data)
})
// Dinlemeyi birak
unsub()Action unsub = chat.On("message", (data) => {
Debug.Log($"Yeni mesaj: {data}");
});
// Dinlemeyi birak
unsub();var unsub = chat.on("message", func(data):
print("Yeni mesaj: ", data)
)
# Dinlemeyi birak: unsub.call()presence
Kullanici giris/cikis event'leri.
chat.on('presence', (data) => {
console.log('Presence degisikligi:', data)
})chat.On("presence", (data) => {
Debug.Log($"Presence: {data}");
});chat.on("presence", func(data):
print("Presence: ", data)
)leave
Sohbet odasindan ayrilir ve tum listener'lari temizler.
await chat.leave()await chat.LeaveAsync();await chat.leave()Tam Ornek
// 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)
// 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()