✨ API endpoint
plumbing 작업부터 하셔야 할것 같아서,
GraphQL endpoint를 배포했습니다.
<GraphQL>
https://demo.alphapeople.me/gql
<GraphQL Playground>
https://demo.alphapeople.me/gql/playground
현재 getTime 이라는 query 와
addCnt 라는 mutation 이 있습니다.
ps. 현재는 HTTP 기반인데, 추후 WebSocket 으로 변경할 예정입니다.
subscription 만 WebSocket 으로 하는게 일반적인거 같네요.
flutter 쪽에서는 (1) 일반적인 방법 (2) 모두 WebSocket 중 어느 쪽이 더 편한지 알려주세요.
채팅 부분은 GraphQL 말고, Phoenix Channel 을 써도 될것 같아서 검토 중입니다.
https://pub.dev/packages/phoenix_socket/versions
4.0.1은 4년 전 버전이라, 채팅이 중요한 저희 서비스에서는 선택하기 어려운 옵션 같습니다 🤔
우선 채팅은 WebSocket 기반으로 검토해주시면 좋을 것 같고, 일반적인 방식으로 가는 것이 좋을 것 같습니다:
- query, mutation (HTTP)
- subscription (WebSocket)
가능한 유지보수가 활발하고 많이 사용하는 Flutter 플러그인을 사용했으면 해서요!
2. phoenix-socket: Phoenix Channel 은 실시간 통신(ex. 채팅)을 위한 Elixir 생태계에서는 거의 표준이라고 보시면 됩니다.
Flutter 라이브러리 업데이트도 최근까지 되고 있네요. Null-safety 도 적용되어 있고, Phoenix Channel 은 표준화가 끝난지도 오래라 안정적일것 같습니다.
https://github.com/braverhealth/phoenix-socket-dart/tree/master/example
여기에 flutter 와 elixir 양쪽 모두를 위한 예제도 있어서 초기에 참고하기 좋을 듯 합니다. 제가 저거 elixir 쪽 참고해서 넣어보려고 합니다.
https://hexdocs.pm/phoenix/channels.html