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
とんと
August 15, 2020
Technology
0
140
Goで始めるWebsocketプログラミング
Kanazawa.rb Meetup #96
とんと
August 15, 2020
Tweet
Share
More Decks by とんと
See All by とんと
推しの VTuber の公式 Web サイトを作った Part.2
ryuseinomi
0
24
これまでに一番苦労したプロジェクト
ryuseinomi
0
19
推しの VTuber の公式サイトを作った
ryuseinomi
0
160
ぼっちがリモートワークやってみた
ryuseinomi
0
78
Kanazawa.rbを振り返る
ryuseinomi
0
89
もう僕は勤怠を入力しなくても良い
ryuseinomi
0
40
AWS Lambdaでファイルをこねくり回す
ryuseinomi
0
410
iOSアプリをリリースするまで
ryuseinomi
2
390
ベトナムエンジニアと 仲良く仕事を進めるには?
ryuseinomi
3
310
Other Decks in Technology
See All in Technology
KubeCon NA 2024 Recap: How to Move from Ingress to Gateway API with Minimal Hassle
ysakotch
0
210
Opcodeを読んでいたら何故かphp-srcを読んでいた話
murashotaro
0
270
OpenAIの蒸留機能(Model Distillation)を使用して運用中のLLMのコストを削減する取り組み
pharma_x_tech
4
560
マイクロサービスにおける容易なトランザクション管理に向けて
scalar
0
140
宇宙ベンチャーにおける最近の情シス取り組みについて
axelmizu
0
110
PHPからGoへのマイグレーション for DMMアフィリエイト
yabakokobayashi
1
170
私なりのAIのご紹介 [2024年版]
qt_luigi
1
120
NilAway による静的解析で「10 億ドル」を節約する #kyotogo / Kyoto Go 56th
ytaka23
3
380
GitHub Copilot のテクニック集/GitHub Copilot Techniques
rayuron
37
15k
20241214_WACATE2024冬_テスト設計技法をチョット俯瞰してみよう
kzsuzuki
3
540
KnowledgeBaseDocuments APIでベクトルインデックス管理を自動化する
iidaxs
1
270
Microsoft Azure全冠になってみた ~アレを使い倒した者が試験を制す!?~/Obtained all Microsoft Azure certifications Those who use "that" to the full will win the exam! ?
yuj1osm
2
110
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
Site-Speed That Sticks
csswizardry
2
190
Agile that works and the tools we love
rasmusluckow
328
21k
Building Your Own Lightsaber
phodgson
103
6.1k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
48
2.2k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
A Philosophy of Restraint
colly
203
16k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
The Cost Of JavaScript in 2023
addyosmani
45
7k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
Fireside Chat
paigeccino
34
3.1k
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からのデータ 読み込み
おしまい