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
210
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
110
Goカードゲームを 作ってみた!
senoue
0
330
App_RunnerとRDSを活用したスケーラブルなWebAPI構築とインフラの自動化.pdf
senoue
1
170
チャンネルを完全に理解する
senoue
0
120
Adobeの生成AIのこと を調べてみた
senoue
0
260
ソフトウェア開発におけるAI :CopilotとGenie
senoue
0
250
Sendai.go x GDG Cloud 仙台 ハンズオン
senoue
0
92
GoでMecab
senoue
0
420
GKEとGoでエフェメラルなサービス
senoue
0
430
Other Decks in Programming
See All in Programming
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
210
AIに “答え“を書かせるのを やめてみた
___akari11
0
120
sbt 2.0: takeoff
eed3si9n
0
160
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
5k
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
490
phperだってパンチカードでコーディングしたい
o0h
PRO
0
320
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
290
The Rails Doctrine Decade
koic
2
580
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.9k
Web Framework Benchmark Battle 2026, Any%
a_matsuda
2
1.4k
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
780
IBM Bob でAI駆動開発『QC-Playbook』
ichirokano2
0
110
Featured
See All Featured
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
950
How GitHub (no longer) Works
holman
316
150k
Being A Developer After 40
akosma
92
590k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
540
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
300
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
750
Leo the Paperboy
mayatellez
10
2.4k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
59k
How Software Deployment tools have changed in the past 20 years
geshan
2
35k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
410
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