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

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

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

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Node.js

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

WebSocket

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

22522閲覧

heroku node.js アプリを開いたらCannot GET /と表示される

sotonenakane

総合スコア14

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Node.js

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

WebSocket

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2017/11/17 08:35

編集2017/11/20 13:34

herokuにnode.jsで書いたwebsocketを上げunityで2台のmacを通信させたいんですが、
herokuにdeployしてopen appをクリックするとCannot GET /と表示されます。
ローカルでは動作を確認してます

//heloku.js(herokuにあげるやつ) var WebSocketServer = require('ws').Server , http = require('http') , express = require('express') , app = express() , port = process.env.PORT || 5000; app.use(express.static(__dirname + '/')); var server = http.createServer(app); server.listen(port,process.env.IP); console.log('http server listening on %d', port); var player1 ; var player1a = 0; var player2 ; var player2a = 0; var count = 0; var hostPC; var wss = new WebSocketServer({server}); wss.broadcast = function (data) { for (var i in this.clients) { this.clients [i].send (data); }; }; console.log('websocket server created'); wss.on('connection', function(ws) { switch(count){ case 0: player1 = ws; player1.send(JSON.stringify({"ID":1,"name":"my"})); player1a = 1; break; case 1: player2 = ws; player2.send(JSON.stringify({"ID":2,"name":"my"})); player2a = 1; break; }; count ++; if (count >= 3){ count = 0; player1a = 0; player2a = 0; console.log ('reset'); }; //誰からでもメッセージを受信した時 ws.on ('message', function (message) { var now = new Date(); console.log (now.toLocaleString() + ' Received: %s', message); wss.broadcast (message); }); //player1からメッセージを受信した時 if (player1a === 1) { player1.on('message', function (pl2) { if (player2a === 1) { if (~pl2.indexOf('my')) { //data2にmyを含む場合の処理 pl2 = pl2.replace( /my/g , "opponent" ) ; }else if ( ~pl2.indexOf('opponent')) { pl2 = pl2.replace( /opponent/g , "my" ) ; }; var data2 = JSON.parse(pl2); player2.send(JSON.stringify(data2)); }; }); //切断時 player1.on('close', function () { player1a = 0; count = 0; console.log ('player1:reset'); }); }; //player2からメッセージを受信した時 if (player2a === 1){ player2.on('message', function (pl1) { if (player1a === 1) { if (~pl1.indexOf('my')) { //data2にmyを含む場合の処理 pl1 = pl1.replace( /my/g , "opponent" ) ; }else if ( ~pl1.indexOf('opponent')) { pl1 = pl1.replace( /opponent/g , "my" ) ; }; /*if ( data1.match(/my/)) { //data2にmyを含む場合の処理 data1 = data1.replace( /my/g , "opponent" ) ; }else if ( ~data1.indexOf('opponent')) { data1 = data1.replace( /opponent/g , "my" ) ; }; */ var data1 = JSON.parse(pl1); player1.send(JSON.stringify(data1)); }; }); //切断時 player2.on('close', function () { player2a = 0; count = 1; console.log ('player2:reset'); }); }; });

//packagejson
{
"name": "test",
"version": "1.0.0",
"description": "test",
"main": "heloku.js",
"dependencies": {
"express": "",
"ws": "
"
},
"scripts": {
"start": "node heloku.js"
},
"engines": {
"node": "6.11.4"
}

}

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

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

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

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

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

guest

回答1

0

ベストアンサー

ローカルでもhttp server listening on 5000で起動したとして、ブラウザでhttp://localhost:5000/にアクセスするとCannot GET /と表示されます。

これは/をリクエストされても何も返す用意がされていないからです。
express.staticで指定しているフォルダにindex.htmlのファイルを置いておけば、open appのURLを開いたときにindex.htmlの内容が表示されます。

また、このexpress.staticの指定ではすべてのファイルが公開されるため、http://localhost:5000/heloku.js等のようにファイル名がわかれば取得出来てしまいます。

app.use(express.static(__dirname + '/public'));

のように公開する静的ファイルはフォルダに分けるようにしましょう。
この場合はpublicフォルダ内のファイルが静的ファイルとして公開されます。

投稿2017/11/20 05:05

shimitei

総合スコア799

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

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

sotonenakane

2017/11/20 11:44

ありがとうございます!おかげさまでできました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問