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

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

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

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

Socket.IO

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

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

Q&A

解決済

1回答

1888閲覧

Socket.IOサーバとは何でしょうか?

xiang

総合スコア1

Node.js

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

Socket.IO

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

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

0グッド

0クリップ

投稿2021/04/22 14:53

前提・実現したいこと

wordpressでオンライン対戦を実装したいです。

初歩的な質問になるかもしれませんがお付き合いください。
ロリポップレンタルサーバーでwordpressを運用しています。
過去に、さくらのVPS + node.jsでオンライン対戦サイトを公開していたことがありますが、
ロリポップレンタルサーバではnode.jsが使用できないと分かりました。
ロングポーリング等代替案を調べていましたが、実装したいゲームの都合上即時応答が必要です。

https://qiita.com/pan2taicho/items/1c2d95ef900a8649fbb4
こちらの記事で別途node.jsが使用できるサーバーを用意すれば可能だと分かりました。

ロリポップマネージドクラウドを新たに契約し、express等インストールしnode.jsでwebサーバを起動するとこまでできています。
(公式ガイダンスに従ってgitにデプロイする方法で公開しましたが必須のプロセスなのでしょうか。不慣れなためあまり使いたくないです。)

環境

サーバ1:ロリポップレンタルサーバー(スタンダードプラン) + wordpress
サーバ2:ロリポップマネージドクラウド + node.js

本題

サーバ1にはクライアントに送るページと読み込むjacascriptファイルがあります。
クライアントとサーバ2をsocket.ioで接続する必要があると思うのですが、
サーバ1からsocket.ioを使えないため(使えますか?)、どのようにクライアントとサーバ2を繋げればよいか分かりません。
つまり

https://teratail.com/questions/16720
こちらの質問者様も同じような環境で実装しているようですが、Socket.IOサーバとは何でしょうか。
サーバ2をWEBサーバとして起動させることしか分かりません。
最悪iframeタグでサーバ2のページをサーバ1に埋め込むということもできそうです...

知識不足で曖昧な質問になっているかもしれません。ヒントとなるフレーズなどいただけたら勉強になります。
どうぞよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

サーバ1からsocket.ioを使えないため(使えますか?)、どのようにクライアントとサーバ2を繋げればよいか分かりません。

サーバー1とサーバー2のオリジンが異なるとしたら、CORS(オリジン間リソース共有)の設定に失敗していると推察します。

Socket.IOサーバーの初期化時に、下記の例のように明示的な設定を行ってみてください。

js

1const app = express(); 2const server = http.createServer(app); 3 4const io = socketIO(server, { 5 // CORSの設定を行う 6 cors: { 7 // 接続を受け入れるオリジン 8 origin: "https://hogehoge.example", 9 // 許可するメソッド 10 methods: ["GET", "POST"], 11 }, 12});

投稿2021/04/23 03:35

編集2021/04/23 03:37
itepechi

総合スコア248

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

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

xiang

2021/04/23 15:30

サーバ1にsocket.io.jsがないためどのように読み込むのかが疑問でした。 オリジン、CORSについて調べているとサーバ2のsocket.io.jsを読み込むことができると分かりました。 はじめは案の定CORSエラーが出ていましたが解答者様のコードを参考に解決することができました。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問