herokuでnodejsでチャット
herokuでリアルタイムチャット作ってみたいなということで、こちらを参考にして作ってみました。(参考というかコアな部分は丸コピになります。)
Node.js + Socket.IO + jQuery で最小構成チャット - Qiita
herokuでアプリの設定
橋本商会 » Node.jsに入門して画像チャットを作ってHerokuで動かした
まあ、最初から最後までこっちでもいいんだけど、念のため。
ファイルの用意
ファイルは以下
- index.html
- server.js
- package.json
- Procfile
index.html
<!doctype html> <meta charset="utf-8"> <title>chat</title> <script src="/socket.io/socket.io.js"></script> <script src="//code.jquery.com/jquery-2.1.3.min.js"></script> <form><input></form><div></div> <script> var socket = io(); $('form').submit(function () { socket.emit('msg', $('input').val()); $('input').val(''); return false; }); socket.on('msg', function (data) { data = $('<div/>').text(data).html(); $('div').prepend(data + '<br>'); }); </script>
server.js
var html = require('fs').readFileSync('index.html'); var http = require('http').createServer( function (req, res) { res.writeHead(200, {'Content-Type': 'text/html'}); res.end(html); }); var io = require('socket.io')(http); var webPort = process.env.PORT || 3000; http.listen(webPort); io.on( 'connection', function (socket) { socket.on( 'msg', function (data) { io.emit('msg', data); } ); } );
herokuの場合はポートがprocess.env.PORTになります。
package.json
{ "name": "chat04", "version": "0.0.1", "description": "test", "main": "server.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "socket.io": "^1.3.6" } }
npm initで質問に答えるだけで自動生成できる。
Procfil
web: node server.js
以上の組み合わせで無事にチャットが動きましたー