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
Goで始めるWebsocketプログラミング
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
嘉音とんと
August 15, 2020
Technology
170
0
Share
Goで始めるWebsocketプログラミング
Kanazawa.rb Meetup #96
嘉音とんと
August 15, 2020
More Decks by 嘉音とんと
See All by 嘉音とんと
CSSの歩き方
kanon_tonto
0
60
推しの VTuber の公式 Web サイトを作った Part.2
kanon_tonto
0
33
これまでに一番苦労したプロジェクト
kanon_tonto
0
27
推しの VTuber の公式サイトを作った
kanon_tonto
0
180
ぼっちがリモートワークやってみた
kanon_tonto
0
96
Kanazawa.rbを振り返る
kanon_tonto
0
110
もう僕は勤怠を入力しなくても良い
kanon_tonto
0
52
AWS Lambdaでファイルをこねくり回す
kanon_tonto
0
430
iOSアプリをリリースするまで
kanon_tonto
2
410
Other Decks in Technology
See All in Technology
Redmine次期バージョン7.0の注目新機能解説 — UI/UX強化と連携強化を中心に
vividtone
1
170
Oracle Cloud Infrastructure presents managed, serverless MCP Servers for Oracle AI Database
thatjeffsmith
1
370
10サービス以上のメール到達率改善を地道に継続的に進めている話 / Continue to improve email delivery rates across multiple services
yamaguchitk333
6
2.1k
CARTA HOLDINGS エンジニア向け 採用ピッチ資料 / CARTA-GUIDE-for-Engineers
carta_engineering
0
47k
開発サイクルのボーダーレス化に伴う組織変革から学んだこと / Organizational Transformation Amid the Borderless Development Cycle
mii3king
0
210
Loadbalancing exporter internals
ymotongpoo
1
100
クラウドネイティブ DB はいかにして制約を 克服したか? 〜進化歴史から紐解く、スケーラブルアーキテクチャ設計指針〜
hacomono
PRO
6
1.1k
AsyncStreamでマルチブロードキャストを実装する
1mash0
1
120
Databricks 月刊サービスアップデートまとめ 2026年04月号
tyosi1212
0
130
なぜ、IAMロールのプリンシパルに*による部分マッチングが使えないのか? / 20260518-ssmjp-iam-role-principal
opelab
1
130
そのSLO 99.9%、本当に必要ですか? 〜優先度付きSLOによる責任共有の設計思想〜 / Is that 99.9% SLO really necessary? Design philosophy of shared responsibility through prioritized SLOs
vtryo
0
810
「背中を見て育て」からの卒業 〜専門技術としてのテスト設計を軸に、品質保証のバトンを繋ぐ〜 #genda_tech_talk
nihonbuson
PRO
4
1.5k
Featured
See All Featured
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
140
Designing Powerful Visuals for Engaging Learning
tmiket
1
370
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
140
Believing is Seeing
oripsolob
1
130
Build your cross-platform service in a week with App Engine
jlugia
234
18k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
250
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
180
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
130
Transcript
Goで始める Websocketプログラミング @27ma4_ton10 github.com/RyuseiNomi Kanazawa.rb Meetup #96 2020/08/15
とんと と申します(`・ω・´) # QA (Selenium, Docker, PHPUnit) # バックエンド (PHP,
Go, AWS) # 社会人3年目 # めめめもみもみ @27ma4_ton10
None
クライアント コンテナ 1 クライアント コンテナ 2 サーバコンテナ chat_network_1 ws://chat_server:8000
クライアントコンテナ 1 サーバーコンテナ クライアントコンテナ 2
クライアント サーバ ・標準入力の受け取り ・サーバへの接続(入室) ・メッセージの送信 ・退室イベントの受取 ・入室エンドポイントの作成 ・リクエストイベント監視 (入室・退室・新規message)
① WebSocket接続の生成 ③ HTTP接続のアップグレード ② エンドポイントへアクセス (入室) ④ クライアントモデルの生成 ⑤
ルームモデルの作成 ⑥ ルームへクライアントの追加 ⑦ イベントの監視 ⑧ メッセージの送信 ⑨ 全てのクライアントへ転送 Client Server ws://chat_server:8000/room
None
[1] chat_client
[2] chat_server [大いに参考(?)] Go言語によるWebアプリケーション開発
① ソケットの生成 ③ HTTP接続のアップグレード ② エンドポイントへアクセス (入室) ④ クライアントモデルの生成 ⑤
ルームモデルの作成 ⑥ ルームへクライアントの追加 ⑦ イベントの監視 ⑧ メッセージの送信 ⑨ 全てのクライアントへ転送 Client Server ws://chat_server:8000/room
None
監視のしやすさ
None
クライアントの追加・削除が容易 (今回で言うと入退室の管理) 最も重要なのは gorutineを用いることで これらのイベントの同時発生を防げる gorutineの性質として、 case節のコードは同時に実行されない。 そのため、 ルーム内のクライアントを保持するMapが クラッシュする心配がない。
入室 退室 転送
Roomモデル Clientモデル ・アクセスのハンドリング ・チャネルの監視 ・空のRoomの生成(setter) ・WebSocketへのメッセー ジの書き込み ・WebSocketからのデータ 読み込み
おしまい