前々から試してみたいなぁと思っていたsocket.ioを試したいと思います。
まずは、socket.ioがどんなものか知る為にチャットプログラムを作成しました。
Expressでプロジェクトを作る
まずは、プロジェクトディレクトリまで行って、プロジェクト作成
express -ejs chat cd chat npm install -d
サーバサイドの編集
まず、npmでsocket.ioをインストールします。
npm install socket.io
次に、app.jsを編集してサーバサイドを編集します。
app.jsの最後のcreateServerの戻り値を変数に格納して使います。
var server = http.createServer(app).listen(app.get('port'), function(){ console.log("Express server listening on port " + app.get('port')); }); // for socket.io var io = require('socket.io').listen(server); io.sockets.on('connection', function(socket) { // on connect console.log(socket.id + ' is connected'); // get message from client socket.on('message', function(msg) { console.log(socket.id + ' has been sent a message, "' + msg + '"'); socket.emit('message', msg); socket.broadcast.emit('message', msg); }); // client disconnected socket.on('disconnect', function() { console.log(socket.id + ' is disconnected.'); }); });
クライアントサイドの編集
クライアントサイドにJavaScriptでsocket.io用のコードを書いていきます。
localhost部分は、ご自身のホスト名に変えて下さい。
<!DOCTYPE html> <html> <head> <title><%= title %></title> <link rel='stylesheet' href='/stylesheets/style.css' /> <script type='text/javascript' src='/socket.io/socket.io.js'></script> <script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js'></script> <script type='text/javascript'> var socket = io.connect('http://localhost'); // when the client connected to the server socket.on('connect', function(msg) { $('#connectId').text("Your ID :: " + socket.socket.sessionid); }); // received message socket.on('message', function(msg) { $('#receive').append(msg + '<br>'); }); // send message function sendMsg() { var msg = $('#message').val(); socket.send(msg); } // disconnect function disconnect() { socket.send(socket.socket.sessionid + ' is disconnected.'); socket.disconnect(); } </script> </head> <body> <h1><%= title %></h1> <div id='connectId'></div> <input type='text' id='message' value=''> <input type='submit' value='Send' onclick='sendMsg()'> <input type='button' value='Disconnect' onclick='disconnect()'> <div id='receive'></div> </body> </html>
app.jsの起動
最後に、app.jsを起動して終了です。node app.js
動くとこんな感じになると思います。
テストプログラム
作成したプログラムはGitHubに置いておきます。
morodomi / socket.io-chat
0 件のコメント:
コメントを投稿