Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Real-time Communication in Go with Melody and W...
Search
Senoue
April 11, 2024
Programming
0
130
Real-time Communication in Go with Melody and WebSockets
2024.4.10 Sendai.go LT資料
Senoue
April 11, 2024
Tweet
Share
More Decks by Senoue
See All by Senoue
App_RunnerとRDSを活用したスケーラブルなWebAPI構築とインフラの自動化.pdf
senoue
1
40
チャンネルを完全に理解する
senoue
0
33
Adobeの生成AIのこと を調べてみた
senoue
0
160
ソフトウェア開発におけるAI :CopilotとGenie
senoue
0
160
Sendai.go x GDG Cloud 仙台 ハンズオン
senoue
0
47
GoでMecab
senoue
0
340
GKEとGoでエフェメラルなサービス
senoue
0
360
GAEのlogはStackDriverがいろいろやってくれている
senoue
1
530
GCPUG 仙台
senoue
1
440
Other Decks in Programming
See All in Programming
2024年のkintone API振り返りと2025年 / kintone API look back in 2024
tasshi
0
180
いりゃあせ、PHPカンファレンス名古屋2025 / Welcome to PHP Conference Nagoya 2025
ttskch
1
240
CNCF Project の作者が考えている OSS の運営
utam0k
5
620
AHC041解説
terryu16
0
550
チームの立て直し施策をGoogleの 『効果的なチーム』と見比べてみた
maroon8021
0
280
Amazon Nova Reelの可能性
hideg
0
260
Swiftコンパイラ超入門+async関数の仕組み
shiz
0
190
2025.01.17_Sansan × DMM.swift
riofujimon
2
670
[JAWS-UG横浜 #79] re:Invent 2024 の DB アップデートは Multi-Region!
maroon1st
0
130
ASP. NET CoreにおけるWebAPIの最新情報
tomokusaba
0
230
2,500万ユーザーを支えるSREチームの6年間のスクラムのカイゼン
honmarkhunt
6
4.3k
GitHub CopilotでTypeScriptの コード生成するワザップ
starfish719
28
6.1k
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
990
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Facilitating Awesome Meetings
lara
51
6.2k
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
Rails Girls Zürich Keynote
gr2m
94
13k
Designing Experiences People Love
moore
139
23k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
113
50k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.6k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Designing for humans not robots
tammielis
250
25k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.4k
Transcript
Real-time Communication in Go with Melody and WebSockets 瀬上祐匡 2024/4/10
瀬上 祐匡(せのうえ ひろまさ) 株式会社ビデオマーケット バックエンドエンジニア • GCP, Go, Python等,BI,データ分析 •
@senoue,@hiromasa.senoue • モノノフです。 • 好きなものは、Cloud Function • Sendai.go やってます 自己紹介 株式会社ビデオマーケット TVOD(都度課金)を軸とした動画配信サービス 映画、アニメ、ドラマなど多彩なジャンルで配信本数は 国内最大の 26 万本+ 自社が開発した独自エンコード方式で高品質な動画を提供
WebSocketとは
- ウェブブラウザとサーバー間で双方向通信を実現するプロトコ ルです。 HTTPとは異なり、一度接続が確立されると、クライアントとサー バー間でメッセージをリアルタイムかつ持続的に交換すること ができます。 - WebSocketプロトコルへのアップグレードを要求する特別な ヘッダー( Upgrade:
websocket)が含まれています。 - WebSocketは、ws://(非セキュアな接続)または wss://(セキュアな接続)スキームを使用して接続を開始しま す。
主要な特徴と種類
- フルデュプレックス通信 : クライアントとサーバーが同時に データを送受信できます。 - リアルタイム性 : ネットワーク遅延が最小限に抑えられる ため、即座にデータを交換することが可能です。
- 持続的な接続 : 接続が開始されると、手動で閉じるかエ ラーが発生するまで維持されます。これにより、再度接続 を確立するための手順が不要になります。 - オーバーヘッドの低減 : 初回ハンドシェイク後は、追加の HTTPヘッダーなどのオーバーヘッドが大幅に削減されま す。
どんなことで利用している
- オンラインチャットやビデオ会議システム - マルチプレイヤーゲーム - ライブスポーツ更新やニュースフィード - ファイナンシャルトレーディングのプラット フォーム -
オンライン協業ツール
実装
- melody の紹介 - Melodyというライブラリを使用してい ます。 - サンプルを動かすのがすごく簡単
- サンプルをいじって、対戦形式のゲームにしてみました。 - https://github.com/Senoue/ws-app
まとめ
- MelodyはWebSocketの抽象化ライブラリで、 Go言語でのリ アルタイム通信を容易にするために作られています。以下に Melodyの主な特徴をまとめます: - 簡単なインターフェース - Melodyはシンプルで直感的な APIを提供し、開発者が
WebSocket接続の管理を簡単に行えるようにしていま す。 - スケーラビリティ - Melodyは多数の同時接続を扱う機能を持っており、大規 模なリアルタイムアプリケーションの開発にも適していま す。
- 軽量性 - ライブラリ自体が軽量であるため、アプリケーションのパ フォーマンスに与える影響が少ないです。 - 柔軟性 - 任意のHTTPハンドラーと組み合わせて使用可能であり、 既存のGoのWebアプリケーションに簡単に統合できます。
- メッセージのブロードキャスト - 接続されている全クライアントに対するメッセージのブロー ドキャストをサポートしており、リアルタイムのデータ配信が 必要なアプリケーションを実現できます。
- セッション管理 - クライアントごとのセッション管理が可能で、各ユーザーに 合わせた通信を実装できます。 - 拡張性 - ミドルウェアやハンドラーを自由に追加することで、カスタ ムのビジネスロジックを実装できる十分な拡張性を持って
います。 - このように、 Melodyはリアルタイムのウェブアプリケーションや ゲーム、チャットシステムなどの開発におすすめできるライブラ リです。Go言語でリアルタイム通信機能を簡単かつ効率的に 取り入れたい場合、 Melodyは非常に便利な選択肢となるで しょう。
Thank You