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

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

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

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Socket.IO

Socket.IOはNode.js上で動くライブラリであり、すべてのブラウザとモバイルデバイスでリアルタイムのアプリを作動させる事を目的としています。

WebSocket

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

2602閲覧

socket.ioで一つのurlに対しての接続人数を一対一に限定させてhostとguestにステータスを振り分ける方法

nanimowakaranai

総合スコア20

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Socket.IO

Socket.IOはNode.js上で動くライブラリであり、すべてのブラウザとモバイルデバイスでリアルタイムのアプリを作動させる事を目的としています。

WebSocket

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/02/10 16:24

編集2020/02/12 00:42

socket.io初心者なのですが、以下のようなことをやりたいです。説明が下手かもしれませんがよろしくお願いいたします。

https://localhost:3000/room/fr32454
みたいな部屋をホストが作成します。websocketサーバー側がこのurlに接続した最初の人にhostの状態を与え、あとから接続した人にguestの状態を渡します。hostとguestが振り分け終わって、3人目の人が入ってこれないようにしたくて以下のようなコードを書きました

typescript

1//socketIO 2let hostStatus: boolean = false; 3let guestStatus: boolean = false; 4 5const socketIO = require('socket.io')(server); 6socketIO.on('connection', (socket) => { 7 if (hostStatus == false && guestStatus == false) { 8 hostStatus = true; 9 //クライアントにホストステータスをわたす処理 10 } else if (hostStatus == true && guestStatus == false) { 11 guestStatus = true; 12 //クライアントにゲストステータスを渡す処理 13 } else if(hostStatus == true && guestStatus == true){ 14 alert("この部屋は満杯です"); 15 //3人目の人に部屋からリダイレクトして追い出す処理 16 } 17 18});

この書き方だと、上記とは違うurlに(仮にroom/4teg4とする)接続したとき、status変数はurlごとに共有されてしまうのでしょうか?もし共有されてしまうのなら、どのようにして
1・roomに接続できる人数を制限するのか
2・部屋ごとにhostやguestの状態を保存させればいいのか

以上になります。もし言葉足らずなところがあれば、質問お願いいたします。よろしくお願いいたします

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

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

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

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

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

guest

回答1

0

https://localhost:3000/room/fr32454みたいな部屋をホストが作成します。

そもそも論にはなりますが、このURLはどのサーバが提供するものなのでしょうか。

  • Socket.ioのサーバでしたら、URLごとに別サーバが動くことになります(通常、そのようなコンフィギュレーションはしませんが)
  • Webサーバでしたら、WebサーバとSocket.ioとの連携処理が必要となります。

どちらにしても、質問内容が不完全で、これ以上詳細な回答ができません。

投稿2020/02/12 00:58

maisumakun

総合スコア145184

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

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

nanimowakaranai

2020/02/12 06:34 編集

回答ありがとうございます。expressで立てたwebサーバーのurlに接続するのを想定しています
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問