go run server.go # port 8080
cd front
yarn build
yarn start
ブラウザで http://localhost:3000 にアクセス
GraphQLのSubscription機能にて、WebSocketのプッシュ型配信のサンプル。
- gqlgenでGraphQLサーバー立てる。
- GinでWeb公開。
- NextJSでフロント作る。
- tailwindcssでデザイン。
go get github.com/99designs/gqlgen # インストール
go run github.com/99designs/gqlgen init # 初期化(色々自動生成)
初期化後
├── go.mod
├── go.sum
├── gqlgen.yml
├── graph
│ ├── generated
│ │ └── generated.go
│ ├── model
│ │ └── models_gen.go
│ ├── resolver.go # [3]
│ ├── schema.graphqls # [1]
│ └── schema.resolvers.go # [2]
└── server.go
-
[1] のスキーマ定義を好きに書き換える
-
[2] を削除して、generateで再生成
go run github.com/99designs/gqlgen generate # 再生成
- [3] のresolver.goのResolverにsubscriberとmutexを定義する
type Resolver struct {
subscribers map[string]chan<- *model.Message // 購読者毎のchannelのマップ
messages []*model.Message
mutex sync.Mutex
}
- [2] の再生成されたひな形(schema.resolver.go)の、未実装メソッドの中身を実装する。
- server.goのResolver生成部を修正