Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Plasma - gRPC streamを利用したリアルタイムなユーザー体験

Ryo Aoyama
September 01, 2018

Plasma - gRPC streamを利用したリアルタイムなユーザー体験

iOSDC Japan 2018

時は2018年未だに定期ポーリングを使った画面更新でリソースを無駄遣いしていませんか?
FRESHではgRPC streamを利用し、サーバープッシュ方式でイベントを受け取る事ができるミドルウェアPlasmaを開発し、リアルタイムで快適なユーザー体験を提供しています。
このトークでは、Plasmaについて実際の利用例を紹介しながらお話します。

Ryo Aoyama

September 01, 2018
Tweet

More Decks by Ryo Aoyama

Other Decks in Programming

Transcript

  1. PROFILE Ryo Aoyama CyberAgent, Inc FRESH LIVE iOS Tech Lead

    CATS (Client Advanced Technology Studio) GitHub: ra1028 Twitter: @ra1028fe5
  2. PLASMA HTTP/2ϕʔεͰ͋ΔgRPC͕αϙʔτ͢Δ4छྨͷ௨৴ํࣜ Unary RPC (1 Request - 1 Response) Server

    streaming RPC (1 Request - Multi Response) Client streaming RPC (Multi Request - 1 Response) Bidirectional streaming RPC (Multi Request - Multi Response)
  3. PLASMASWIFT enum EventType: RawRepresentable { case stats(programId: String) var rawValue:

    String { /* return event type string */ } init?(rawValue: String) { /* parse payloads */ } } let eventTypes: [EventType] let rawEventTypes = eventTypes.map { $0.rawValue } let client = PlasmaClient(host: host, port: port) client.subscribe(eventTypes: rawEventTypes, retryCount: 10) { event in switch event { case .next(let payload): // Do something case .error(let error): // Error handling } } Subscribe͢ΔΠϕϯτͷఆٛ ResultͷΑ͏ͳenumͰ஋͕౉͞ΕΔ