Satont.
299 subscribers
321 photos
52 videos
1 file
201 links
Download Telegram
Audio
4🔥1😁1👀1
Стрим онлайн на пару часов, хочу потыкать этот ваш graphql.
🔥1
Online.
Как же у меня уже ручки потираются на gql начать переписывать по-немногу апи twir.

Как в старые добрые бы стримчанский на 20+ часов, но уже времени не много из-за работы, да и здоровье гробить не хочется.

Я без стрима потестировал subscription's gql, делаются очень просто, работают over websockets, при этом всё на фронте по типам покрыто, хорошо работает в связке с бэком.
Описываем схему:
type Subscription {
"""
`newCommand` will return a stream of `Command` objects.
"""
newCommand: Command!
}

Генерируется код, который нам нужно имплементировать. Там нужно лишь писать в канал, чтобы отправить сообщение по сокету. Я для примера создал себе общий канал r.NewCommandChann (не gql), чтобы когда в него пишут — писался ивент gql.
func (r *subscriptionResolver) NewCommand(ctx context.Context) (<-chan *gqlmodel.Command, error) {
ch := make(chan *gqlmodel.Command)

fmt.Println("Subscription Started")

go func() {
defer close(ch)

for {
select {
case <-ctx.Done():
fmt.Println("Subscription Closed")
return

case cmd := <-r.NewCommandChann:
fmt.Println("New Command")
ch <- cmd
}
}
}()

return ch, nil
}


В итоге на фронте создаём подписку с интересующими нам полями, и всё автоматически работает.
const { data: commandSubscription, executeSubscription } = useSubscription({
query: graphql(`
subscription newC {
newCommand {
id
name
description
aliases
responses {
id
commandId
text
order
}
createdAt
updatedAt
}
}
`),
});


Не кайф ли?
👍5🤯1😐1
Коротенький на часик-другой онлайн.

Upd: offline.
🔥2
Хоспади, какая красотка.
❤‍🔥3🗿2
Hi, online.

Upd: offline
🫡1
Hi, online.
This media is not supported in your browser
VIEW IN TELEGRAM
🤯1
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
😁2
This media is not supported in your browser
VIEW IN TELEGRAM
5👍1
Live stream started
Live stream finished (22 minutes)