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

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

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

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Node.js

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

2263閲覧

cloud9でPHPとnode.jsを使ってメッセージ機能を実装したいけどnode.jsのサーバーが起動しない

YorihiroKatsuki

総合スコア70

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Node.js

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/08/23 08:04

■背景・聞きたいこと
現在cloud9でPHPを使ったWebサービスを構築中です。

Webサービス内にユーザー間でメッセージをやり取りする機能をつけたいと思っています。
そのために、cloud9でPHPのテンプレートを選択し、node.js,socket.ioを入れましたが、cloud9上でApacheのサーバーを起動させた後にnode.jsのサーバー(app.js)を起動させようとするとうまく起動出来ません。
おそらく同じport番号を使っているからだと思い、port番号を3000等に変えてみました。その上で、
node app.js
とコマンドを打つと、何も表示されないまま止まってしまいます。

検索してもよくわからないため質問させて頂きました。
cloud9のテンプレートはPHPを選択していて、すでにコードも結構書いているため、テンプレートをnode.jsに選択し直す、ということはしたくないです。

また、サーバーがちゃんと起動しているかどうかを確かめる方法があれば教えて頂きたいです。

なんとか助けて頂けると嬉しいです。

宜しくお願いいたします!

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

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

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

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

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

guest

回答2

0

node app.js
とコマンドを打つと、何も表示されないまま止まってしまいます。

ターミナルのフォアグラウンドで実行されているなら、それで正常だと思います。


3000番は使えなかったと認識しています。

Run an Application · Cloud9

Available ports on a hosted Cloud9 workspace

If you're developing a server application, please note that you need to listen to 0.0.0.0 ($IP) and 8080 ($PORT). Listening to this port will enable your app to be viewable at http://<workspacename>-<username>.c9users.io

You can also bind to ports 8081, and 8082, which can be accessed by http://<workspacename>-<username>.c9users.io:8081 and http://<workspacename>-<username>.c9users.io:8082 respectively.

Please note that 8080, 8081, and 8082 are the only available ports on a hosted Cloud9 workspace.


以下にて動作を確認しました。

javascript

1var http = require('http'); 2var server = http.createServer(function(req, res) { 3 res.writeHead(200, {'Content-Type': 'text/plain'}); 4 res.write('Hello Wrold\n'); 5 res.end(); 6}); 7server.listen(8082); 8 9console.log('Server running at http://127.0.0.1:8082');

動作確認は別のターミナルからcurlコマンドでも使ってみてください。
もちろんブラウザからでも出来ます。

xxx:~/workspace $ curl ワークスペース名-アカウント名.c9users.io:8082/ Hello Wrold xxx:~/workspace $ curl 127.0.0.1:8082/ Hello Wrold

投稿2016/08/23 09:17

izkn

総合スコア1698

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

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

YorihiroKatsuki

2016/08/23 17:03

ありがとうございます! 8082にしたらちゃんと起動しました。 助かりました。
guest

0

ベストアンサー

何も表示されないで止まるのであれば恐らくサーバーは正常に動いています。
しかし、このままではその起動しているアプリケーションにブラウザからアクセスすることはできません。
そこで、PORTIPという環境変数を利用するサーバーとなるプログラムを作る必要があります。

以下がそのような最小のnode.jsのプログラムです。

しかし、PHPのアプリケーションを起動しながらNode.jsを同時に起動するのはCloud9の仕組み上難しいです。PHPからWebSocketを利用してリアルタイムチャットを実装することもできます。そちらも調べてみてはいかがでしょうか?

javascript

1const http = require('http'); 2 3const hostname = process.env.IP; 4const port = parseInt(process.env.PORT, 10); 5 6const server = http.createServer((req, res) => { 7 res.statusCode = 200; 8 res.setHeader('Content-Type', 'text/plain'); 9 res.end('Hello World\n'); 10}); 11 12server.listen(port, hostname, () => { 13 console.log(`Server running at http://${hostname}:${port}/`); 14});

投稿2016/08/23 08:56

MakeNowJust

総合スコア545

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

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

YorihiroKatsuki

2016/08/23 17:05

ありがとうございます! 確かに、cloud9上でnode.jsとPHPを同時に実行するのは難しそうです。。 PHPを使ったwebsocketで簡単にできそうなのがあったので、それを使ってみようと思います。 目的に対して+αのアドバイスまでいただいたのでベストアンサーにさせていただきます。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問