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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
嘉音とんと
August 15, 2020
Technology
0
160
Goで始めるWebsocketプログラミング
Kanazawa.rb Meetup #96
嘉音とんと
August 15, 2020
Tweet
Share
More Decks by 嘉音とんと
See All by 嘉音とんと
CSSの歩き方
kanon_tonto
0
55
推しの VTuber の公式 Web サイトを作った Part.2
kanon_tonto
0
29
これまでに一番苦労したプロジェクト
kanon_tonto
0
25
推しの VTuber の公式サイトを作った
kanon_tonto
0
170
ぼっちがリモートワークやってみた
kanon_tonto
0
91
Kanazawa.rbを振り返る
kanon_tonto
0
110
もう僕は勤怠を入力しなくても良い
kanon_tonto
0
48
AWS Lambdaでファイルをこねくり回す
kanon_tonto
0
430
iOSアプリをリリースするまで
kanon_tonto
2
410
Other Decks in Technology
See All in Technology
Claude Codeで実践するスペック駆動開発入門 / sdd-with-claude_code
yoshidashingo
2
2.4k
22nd ACRi Webinar - NTT Kawahara-san's slide
nao_sumikawa
0
140
Goで実現する堅牢なアーキテクチャ:DDD、gRPC-connect、そしてAI協調開発の実践
fujidomoe
1
130
AI駆動開発とRAGプロダクトへの挑戦の軌跡 - 弁護士ドットコムでの学びから -
bengo4com
0
390
AI駆動開発を事業のコアに置く
tasukuonizawa
1
1.6k
Getting started with Google Antigravity
meteatamel
0
210
新規事業開発でのAWS活用
amixedcolor
1
180
「データの価値を、みんなの武器に。」Data Enablementの価値とツラみ
ryoskdara_
1
120
pool.ntp.orgに ⾃宅サーバーで 参加してみたら...
tanyorg
1
3k
Generative UI を試そう!A2-UIでAIエージェントにダッシュボードを作らせてみた
kamoshika
1
220
#23 Turing × atmaCup 2nd 6th Place Solution + 取り組み方紹介
yumizu
0
150
器用貧乏が強みになるまで ~「なんでもやる」が導いたエンジニアとしての現在地~
kakehashi
PRO
3
200
Featured
See All Featured
WENDY [Excerpt]
tessaabrams
9
36k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
210
Mind Mapping
helmedeiros
PRO
1
99
It's Worth the Effort
3n
188
29k
Building the Perfect Custom Keyboard
takai
2
700
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
A better future with KSS
kneath
240
18k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
300
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
190
Unsuck your backbone
ammeep
671
58k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
Context Engineering - Making Every Token Count
addyosmani
9
680
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からのデータ 読み込み
おしまい