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
130
Goで始めるWebsocketプログラミング
Kanazawa.rb Meetup #96
とんと
August 15, 2020
Tweet
Share
More Decks by とんと
See All by とんと
推しの VTuber の公式 Web サイトを作った Part.2
ryuseinomi
0
22
これまでに一番苦労したプロジェクト
ryuseinomi
0
19
推しの VTuber の公式サイトを作った
ryuseinomi
0
150
ぼっちがリモートワークやってみた
ryuseinomi
0
69
Kanazawa.rbを振り返る
ryuseinomi
0
79
もう僕は勤怠を入力しなくても良い
ryuseinomi
0
40
AWS Lambdaでファイルをこねくり回す
ryuseinomi
0
360
iOSアプリをリリースするまで
ryuseinomi
2
360
ベトナムエンジニアと 仲良く仕事を進めるには?
ryuseinomi
3
300
Other Decks in Technology
See All in Technology
チームビルディングは"感性"で向き合おう / Team Building with Awareness
kohzas
0
260
ロリポップ! for Gamersを支えるインフラ/lolipop for gamers infrastructure
takumakume
0
140
再考 アクターモデル/ reconsider actor model
ytake
0
360
LLVM/ASMを使った有限体の高速実装
herumi
0
120
技術的負債解消の取り組みと専門チームのお話
bengo4com
0
340
Tricentisにおけるテスト自動化へのAI活用ご紹介/20240910Shunsuke Katakura
shift_evolve
0
200
不動産 x AIことはじめ~データの真価を拓くために
estie
0
120
Classmethod AI Talks(CATs) #1 司会進行スライド(2024.09.19) / classmethod-ai-talks-aka-cats_moderator-slides_vol1_2024-09-19
shinyaa31
0
120
プログラム検証入門
riru
6
880
社内の学びの場・コミュニティ形成とエンジニア同士のリレーションシップ構築/devreljapan2024
nishiuma
3
290
Agile in Automotive Industry, puzzles and lights.
hiranabe
3
1.4k
AIで変わるテスト自動化:最新ツールの多様なアプローチ/ 20240910 Takahiro Kaneyama
shift_evolve
0
240
Featured
See All Featured
What's new in Ruby 2.0
geeforr
340
31k
Statistics for Hackers
jakevdp
794
220k
In The Pink: A Labor of Love
frogandcode
139
22k
Making Projects Easy
brettharned
113
5.8k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
166
48k
Building Adaptive Systems
keathley
36
2.1k
Raft: Consensus for Rubyists
vanstee
135
6.5k
How STYLIGHT went responsive
nonsquared
93
5.1k
A Tale of Four Properties
chriscoyier
155
22k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Facilitating Awesome Meetings
lara
49
6k
How GitHub Uses GitHub to Build GitHub
holman
472
290k
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からのデータ 読み込み
おしまい