Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Real-time Communication in Go with Melody and W...
Search
Senoue
April 11, 2024
Programming
220
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Real-time Communication in Go with Melody and WebSockets
2024.4.10 Sendai.go LT資料
Senoue
April 11, 2024
More Decks by Senoue
See All by Senoue
Go(5)分で! ECC暗号を動かして理解する BuriKaigi 2026
senoue
2
120
Goカードゲームを 作ってみた!
senoue
0
350
App_RunnerとRDSを活用したスケーラブルなWebAPI構築とインフラの自動化.pdf
senoue
1
170
チャンネルを完全に理解する
senoue
0
120
Adobeの生成AIのこと を調べてみた
senoue
0
260
ソフトウェア開発におけるAI :CopilotとGenie
senoue
0
260
Sendai.go x GDG Cloud 仙台 ハンズオン
senoue
0
98
GoでMecab
senoue
0
420
GKEとGoでエフェメラルなサービス
senoue
0
430
Other Decks in Programming
See All in Programming
GraphQL の onError と Nullability のこれから
quramy
0
210
動画プレイヤーはなぜカクつくのか 〜Flutterのレンダリングとネイティブの境界を解剖する〜
naruogram
0
330
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
1.5k
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
4
3.7k
Web3Dライブラリを作ってVue Custom Rendererの仕組みを理解しよう / lets learn vue custom renderer by making 3d library
drumath2237
1
120
プロジェクトコードをキレイキレイしよう!暗黙的な参照を読み解く静的解析
ostk0069
0
200
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
280
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
220
AI駆動開発4年目の現在地(『あなたはFDEになるべきか?』イベント資料)
kumaiu
0
140
Getting Started with Vibe Coding
miccheng
0
180
AI Augmentation Techniques with Liberty
ivargrimstad
1
370
Lambda durable functionsでHuman in the Loopを楽に…楽に……
har1101
2
280
Featured
See All Featured
Chasing Engaging Ingredients in Design
codingconduct
0
390
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
380
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
630
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
790
Six Lessons from altMBA
skipperchong
29
4.6k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
121
120k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
630
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
610
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
1k
First, design no harm
axbom
PRO
2
1.4k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
330
Done Done
chrislema
187
17k
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