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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Senoue
April 11, 2024
Programming
190
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
80
Goカードゲームを 作ってみた!
senoue
0
270
App_RunnerとRDSを活用したスケーラブルなWebAPI構築とインフラの自動化.pdf
senoue
1
150
チャンネルを完全に理解する
senoue
0
95
Adobeの生成AIのこと を調べてみた
senoue
0
240
ソフトウェア開発におけるAI :CopilotとGenie
senoue
0
230
Sendai.go x GDG Cloud 仙台 ハンズオン
senoue
0
87
GoでMecab
senoue
0
410
GKEとGoでエフェメラルなサービス
senoue
0
410
Other Decks in Programming
See All in Programming
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
820
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
150
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
7.2k
JavaDoc 再入門
nagise
1
440
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
190
吝嗇家のためのAI活用 / AI development for miser - ChatGPT + Issue Driven Development
tooppoo
0
130
SLOをサービス品質の共通言語にするために 取り組んできたこと
wakana0222
0
220
自作OSでスライド発表する
uyuki234
1
3.5k
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
620
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
210
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
280
エンジニア向け会社紹介/Findy Company Profile
findyinc
6
360k
Featured
See All Featured
Designing for humans not robots
tammielis
254
26k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Side Projects
sachag
455
43k
Fireside Chat
paigeccino
42
4k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Crafting Experiences
bethany
1
200
RailsConf 2023
tenderlove
30
1.5k
So, you think you're a good person
axbom
PRO
2
2.1k
WENDY [Excerpt]
tessaabrams
11
38k
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