久しぶりに技術ネタでも。

大学院の授業でオレオレプロトコルを作る授業がありまして、作ったは良いけどどこかにサクッとデプロイできないかなー、herokuとか良いんじゃないかなー、いや、でもherokuって基本はHTTPのサービスじゃなかったかな、いや、どうだろう?探してみるか?


という事で、ありました。

Ruppell's Sockets | Heroku Dev Center

好きなsocketプログラミングをherokuにデプロイできるぜ!みたいなaddonのようです。 後述しますが、内部的にはsshポートフォワードで実現してるっぽいです。

heroku addons:create ruppells-sockets

こちらのaddonを乗せて

git submodule add https://bitbucket.org/ruppells/sockets-connect.git lib/sockets-connect

gitのsubmoduke突っ込んで

echo 'socket: ./lib/sockets-connect/rs-conn ./any_start_command' > ./Procfile

Procfileに socket コマンドで ./lib/sockets-connect/rs-conn から起動コマンドをキックさせるように記述します。 コマンドが複雑な場合は1つのシェルスクリプトなんかにまとめておけば問題ありませんね。

git add .; git commit -m "Add awesome configuration"; git push heroku master

あとは適宜git commitして、push

heroku config:get RUPPELLS_SOCKETS_FRONTEND_URI #-> tcp://4950.381b424d-12fa-4fad-b464-9013a482ca7f.sockets.ruppells.io:4950

内部的にはsshのポートフォワードで実現しているようなので、上記のようにしてendpointを取得します。

バックエンドのポートはデフォルトだと1337番が勝手に振られて、通信出来ないとステータスコードでエラーと言われます(heroku logs -tのログで確認できます)。 ですので、バックエンドのポートが決まってる場合は

echo 'socket: ./lib/sockets-connect/rs-conn -b 8080 ./any_start_command' > ./Procfile

みたいにして、ポートを指定します。 ですが、ここは結局バックエンドのポートなので、フロントのsshポートフォワードされた方はなんだかうまく指定出来ません...。調べれば分かるかも。

ではでは。

4月読了

| トラックバック(0)

3月読了

| トラックバック(0)

2月読了

| トラックバック(0)

1月読了

| トラックバック(0)