node.js+socket.ioサンプル
node.js+socket.ioの最もシンプルなサンプルです。
サーバーで受けたデータを接続しているクライアント全員に配信する、簡易チャットになってます。
server.js
//http server var http = require('http'), io = require('socket.io'), fs = require('fs'), server = http.createServer(function(req, res){ res.writeHead(200, {'Content-Type': 'text/html'}); var output = fs.readFileSync('./index.html', 'utf8'); res.end(output); }); //socket server var io = io.listen(server); io.sockets.on('connection', function(client) { console.log('client connected'); client.on('message', function(message) { //自分に送信 client.emit('message',message); //自分以外に送信 client.broadcast.emit('message',message); }); client.on('disconnect', function(){ console.log('disconnect'); }) }); server.listen(8080);
index.html
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>ちゃっとテスト</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script> <script src="/socket.io/socket.io.js"></script> <script> $(function() { init(); }); var socket; function init(){ socket = io.connect(); //接続 socket.on('connect', function() { writeMessage('CONNECT SUCCESS','#999999'); }); //データ受信ハンドラ socket.on('message', function(message){ writeMessage(message); }); //サーバ切断 socket.on('disconnect', function(message){ writeMessage('切断されました','#999999'); }); } //メッセージをHTMLに書きこむ function writeMessage( message,color ){ if( !color ){ color = '#000000'; } message = '<div style="color:'+color+'" class="message">'+message+'</div>' $("#show").after(message); } //メッセージを送信する function submitMessage(){ var message = $('#message').val(); if( message == '' ){ return; } $('#message').val(''); socket.emit('message',message); } </script> </head> <body> <input type="text" id="message" /> <input type="button" value="送信" onclick="submitMessage()"> <div> <div id="show"></div> </div> </body> </html>
実行
上記2ファイルを保存して
node server.js
上記コマンドを実行
http://host_ip:8080/
にアクセス(host_idはサーバーのIPに書き換え)