LoginSignup
35
31

More than 5 years have passed since last update.

node, socket.ioを使ったウェブアプリをherokuにアップロードした時につまずいたところメモ

Last updated at Posted at 2013-06-20

Abstract

最近nodeを触り始めて、簡単なものを作ってローカルで動いたからherokuで動かそうとしたら割りとはまったのでメモっておく

Condition

前提として、node, socket.io, heroku等の公式サイトのマニュアルとか見ながらlocalhostで動くものが出来上がり、それをそのまま git push heroku master してサーバにファイルをアップロードしたが割り当てられたURLにアクセスしても動かない、という状況から原因をつぶしていく。

Content

Procfile

最初作ったウェブページにアクセスすると↓のようなメッセージが表示された。

Application Error
An error occurred in the application and your page could not be served. Please try again in a few moments.

If you are the application owner, check your logs for details.

ぐぐったら、herokuでサーバ動かす時Procfileなるものが必要らしい。
https://github.com/herokaijp/devcenter/wiki/procfile
で、以下の記述の Procfile というファイルをリポジトリルートディレクトリに置く。

web: node app.js

しかしまだ動かない。

サーバを起動してない

git push heroku master したら勝手にサーバ起動してくれるのかと思ってたけどそんなことはなかった。

heroku ps:scale web=1

でサーバの起動。これで上記エラーは消えて、ぱっと見動くように見えた。が、実際に動かしてみても動かない。

localhost直書き

お前は馬鹿か
git grep localhost して見つかったところを location.origin とかに置き換える。
まだ直らない。

socket.io動かない

↓こんなエラーが出てた(恥ずかしいのでurlは変えてある)

WebSocket connection to 'ws://xxx.herokuapp.com/socket.io/1/websocket/RUaEEiZKh3HC5AUAuHte' failed: Unexpected response code: 503 

ぐぐったらこれに行き当たった。
https://devcenter.heroku.com/articles/using-socket-io-with-node-js-on-heroku
ので、このドキュメント通りに

io.configure(function () { 
  io.set("transports", ["xhr-polling"]); 
  io.set("polling duration", 10); 
});

を追加した。

やっと動いた。

Reference

35
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
35
31