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 WebSockets
Search
Senoue
April 11, 2024
Programming
0
40
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
Adobeの生成AIのこと を調べてみた
senoue
0
66
ソフトウェア開発におけるAI :CopilotとGenie
senoue
0
78
Sendai.go x GDG Cloud 仙台 ハンズオン
senoue
0
22
GoでMecab
senoue
0
270
GKEとGoでエフェメラルなサービス
senoue
0
310
GAEのlogはStackDriverがいろいろやってくれている
senoue
1
440
GCPUG 仙台
senoue
1
370
ペチコン2019資料
senoue
1
160
Other Decks in Programming
See All in Programming
PostmanでAPIの動作確認が楽になった話
h455h1
0
170
Sheets API使ってみた
toshi0383
2
150
Node.js v22 で変わること
yosuke_furukawa
PRO
11
3.9k
Elm 0.19.0 Changes
bkuhlmann
0
490
Milestoner
bkuhlmann
1
410
Fast JSX: Don't clone props object #28768
yossydev
1
150
新宿ダンジョンを可視化してみた
satoshi7190
2
280
if constexpr文はテンプレート世界のラムダ式である
faithandbrave
3
670
Site Reliability Engineering for GMO
pyama86
8
1.1k
初心者のためのRubyKaigi入門/RubyKaigi Introduction
a_matsuda
8
1.3k
ADRを一年運用してみた/adr_after_a_year
hanhan1978
7
2.4k
『Railsオワコン』と言われる時代に、なぜブルーモ証券はRailsを選ぶのか
free_world21
1
330
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
19
3.9k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
19
6.9k
KATA
mclloyd
16
12k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
33
6k
The Language of Interfaces
destraynor
151
23k
Unsuck your backbone
ammeep
663
57k
Producing Creativity
orderedlist
PRO
338
39k
Building Effective Engineering Teams - LeadDev
addyosmani
31
1.9k
A Tale of Four Properties
chriscoyier
152
22k
The Invisible Customer
myddelton
114
12k
Rebuilding a faster, lazier Slack
samanthasiow
74
8.2k
Rails Girls Zürich Keynote
gr2m
91
13k
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