質問: ■背景・聞きたいこと 現在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に選択し直す、ということはしたくないです。 また、サーバーがちゃんと起動しているかどうかを確かめる方法があれば教えて頂きたいです。 なんとか助けて頂けると嬉しいです。 宜しくお願いいたします!
回答: 何も表示されないで止まるのであれば恐らくサーバーは正常に動いています。 しかし、このままではその起動しているアプリケーションにブラウザからアクセスすることはできません。 そこで、`PORT`と`IP`という環境変数を利用するサーバーとなるプログラムを作る必要があります。 以下がそのような最小のnode.jsのプログラムです。 しかし、PHPのアプリケーションを起動しながらNode.jsを同時に起動するのはCloud9の仕組み上難しいです。PHPからWebSocketを利用してリアルタイムチャットを実装することもできます。そちらも調べてみてはいかがでしょうか? ``` const http = require('http'); const hostname = process.env.IP; const port = parseInt(process.env.PORT, 10); const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World\n'); }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); }); ```