質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WebSocket

WebSocketとは双方向・全二重コミュニケーションのためのAPIでありプロトコルのことを指します。WebSocketはHTML5に密接に結びついており、多くのウェブブラウザの最新版に導入されています。

マルチスレッド

マルチスレッドは、どのように機能がコンピュータによって実行したのかを、(一般的にはスレッドとして参照される)実行の複合的な共同作用するストリームへ区分することが出来ます。

Q&A

解決済

2回答

2248閲覧

WebSocketをマルチスレッドで扱う

ois

総合スコア50

WebSocket

WebSocketとは双方向・全二重コミュニケーションのためのAPIでありプロトコルのことを指します。WebSocketはHTML5に密接に結びついており、多くのウェブブラウザの最新版に導入されています。

マルチスレッド

マルチスレッドは、どのように機能がコンピュータによって実行したのかを、(一般的にはスレッドとして参照される)実行の複合的な共同作用するストリームへ区分することが出来ます。

0グッド

1クリップ

投稿2018/05/30 07:16

Websocketでチャットツールを試しに作っています。
5分間、どのクライアントからも応答がなかった場合、
サーバから何か表示させようと思います。

この時に、
・websocket通信をしているスレッド
・カウンターを回すスレッド
の2スレッドが必要かなと思うのですが、どちらをメインスレッドにするべきですか。

そもそも、スレッドってWeb系だとどういう時に使うんでしょうか。
よく使うパターンとかあったら教えていただきたいです。
(今回の場合、「カウントするときに別スレッド立てるよ」とか、逆に、「ポーリングするときは別スレッドでlistenするだけのスレッドを立てるよ」とか)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2018/05/30 07:18

サーバの言語は何でしょうか?
ois

2018/05/30 07:55

Pythonです
maisumakun

2018/05/30 08:19

すみません、Pythonだと状況がわからないです…お役に立てず申し訳ありません。
ois

2018/05/30 08:33

いえいえ、ありがとうございます。Javaとかでも考え方は同じだと思うんですが、いかがでしょうか。
maisumakun

2018/05/30 08:37

Node.jsはシングルスレッドしかない、など、環境によって大きく違ってくるのがスレッドです。
ois

2018/05/30 08:53

そうなんですね。かしこまりました!
guest

回答2

0

ベストアンサー

Push型ですか?そうならば、pushする人でしょう。
web系ならthreadは、I/Oなどどれくらい時間がかかるか不明なもの、並列クリエするそれぞれのクリエを別々にします。
質問者の例の場合、
大量のユーザがいるchatであれば、ユーザ毎か、セッション毎にthreadにする。login時にthreadを作成して、chat終了で、threadを終了する。ように設計します。大量のメッセージを流すユーザがいた場合、全部を単一サーバで処理すると、サーバが忙しくなりすぎて、他のユーザの処理も影響を受けます。
別theadであれば、大量メッセージとは関係ないユーザへの影響は少なくなります。
ユーザが寝ているときに、そのユーザに注意を喚起するのであれば、そのユーザーのthreadがタイマを監視して処理します。他のユーザに寝落ち報告をするのであれば、寝落ち警告をマスタthreadに送って、マスタthreadがしかるべき処理します。起きていると思われるユーザ全員に連絡するとか、自動的にthreadを終了させるとか..

気に入ったら評価してね。

投稿2018/06/02 23:22

gm300

総合スコア580

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

どちらもメインスレッドにはしません
メインスレッドでブロックしてしまうと、UI側で応答なしになってしまいますね

投稿2018/05/30 08:03

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2018/05/30 08:14

サーバサイドにUIスレッドは通常ないと思うのですが…
y_waiwai

2018/05/30 08:16

おお、サーバサイドでしたか。おっしゃるとおりでした
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問