https://github.com/arturmareknowak/grpcgraphqlwebsockets
Implementation of REST, gRPC, WebSockets and GraphQL endpoints within one container with data stored in SQLite
https://github.com/arturmareknowak/grpcgraphqlwebsockets
docker graphql grpc hotchocolate rest signalr sqlite swagger
Last synced: 6 months ago
JSON representation
Implementation of REST, gRPC, WebSockets and GraphQL endpoints within one container with data stored in SQLite
- Host: GitHub
- URL: https://github.com/arturmareknowak/grpcgraphqlwebsockets
- Owner: ArturMarekNowak
- License: mit
- Created: 2022-03-19T20:56:23.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2025-01-12T21:19:31.000Z (9 months ago)
- Last Synced: 2025-02-14T20:40:12.300Z (8 months ago)
- Topics: docker, graphql, grpc, hotchocolate, rest, signalr, sqlite, swagger
- Language: C#
- Homepage:
- Size: 170 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# gRPC GraphQL WebSockets
  [](https://www.codefactor.io/repository/github/arturmareknowak/grpcgraphqlwebsockets/overview/master)
The objective of this project is to make a toy example of REST API, gRPC, GraphQL and Websockets all accessing and realizing the same objective: retrieving and sending a simple message to the same database.
## Table of contents
* [General info](#general-info)
* [Screenshots](#screenshots)
* [Technologies](#technologies)
* [Setup](#setup)
* [Inspiration](#inspiration)## General info
Solution consists of two projects:1. gRPCGraphQLWebSockets.csproj - this project contains database along with REST API, gRPC, GraphQL and SignalR server
2. Second item - this project contains SignalR clientAfter project is build and run the four API's can be accessed via given URL's:
- http://localhost:5000/swagger/index.html - under this URL well-know Swagger documentation documents REST and gRPC endpoints:
- http://localhost:5000/rest
- http://localhost:5000/grpc
- http://localhost:5000/graphql - under this URL the Banana Cake Pop tool can be accessed which allows to test GraphQL with ease
- http://localhost:5000/signalr - under this URL the SignalR server operates. Unfortunately no "built-in" tool is implementated to test it. Hence I made a simple SignalR client. But I hope that it changes soon and the SignalR endpoints would be accessible from SwaggerUI.For container the origin is: http://localhost:8080/
Solution structure is as following:
.
└──src
├── GrpcGraphQlWebSockets # Server application for REST, GraphQL, SignalR and gRPC
│ ├── Database # Directory where database context is stored along with SQLite database itself
│ ├── google # This directory contains .proto files required to run gRPC, placed in here beacuse otherwise it won't work
│ ├── GraphQl # GraphQL mutations, queries and models are stored in here
│ ├── Grpc # gRPC service.cs and service.proto files are stored in here
│ ├── Rest # REST controller, service and model
│ ├── SignalR # SignalR server hub is stored in here
│ └── SharedModel # Models the same throughout the whole solution
│
└── SignalRClient # Simple SignalR client console application - one file and one .csproj
└── ...## Screenshots
### SignalR
You can see messages incoming from gRPC and REST being broadcasted to SignalR client as I wanted to be. They are with timestamp. You can also see message sent from SignalR client upon which Id was returned as indication of succesfull message sending.

### gRPC
gRPC response in swagger.

### GraphQL
GraphQL example.

## Technologies
* REST API
* gRPC
* GraphQL
* SignalR
* SQLite
* Docker## Setup
If you have .NET8 and Visual Studio or JetBrains Rider just open .sln file and try to run the project.## Status
Project is: _finished_Since Microsoft documentation on gRPC+Swagger is realy "so so" these two guys were my inspiration in this case:
https://github.com/grpc/grpc-dotnet/issues/167#issuecomment-830776140
https://github.com/bernardbr/dotnetgrpcrest
https://github.com/fl0wm0ti0n/GrpcWithHttpApiSwaggerAndDocker_Test