と思ったので( ´ω`)
socket.ioを使った簡単コードをさらしときます。
使おうと思っているのはサーバーからのほぼ一方的データプッシュなので
ここでは1秒おきに現在時間をプッシュしてみてます。
broadcastは、使おうと思っている箇所がroomも要るかもなので
また勉強したあとで。
そういえばroomっていくつ作れるんだろう・・・( ´ω`)
◎環境
CentOS6.3
Apache2.4.3
Node.js@0.8.11(nvm使用)
socket.io@0.9.10(npm install -g 使用)
Chrome22.0.1229.79m
Firefox15.0.1
◎ファイル配置
index.html:/usr/local/apache2/htdocs(つまりDocumentRoot)
server.js:/usr/local/src(適当なフォルダ)
Node.js:/usr/local/src/nvm/v0.8.11
socket.io:/usr/local/src/nvm/v0.8.11/lib/node_modules/socket.io
※nvm.shにNODE_PATH=$NODE_PATH:${NVM_PATH}_modules追加した。
◎IPアドレス、ポート
Apache:172.16.0.1:80
socket.io:172.16.0.1:8000
◎index.html
<!DOCTYPE html> <html lang="ja"> <head> <title>WebSocketTest</title> <meta charset="UTF-8" /> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <script src="http://172.16.0.1:8000/socket.io/socket.io.js"></script> <script> var socket=io.connect('http://172.16.0.1:8000/'); socket.on('connecting',function(){ $("#content").text('Connecting...'); }); socket.on('error',function(){ $("#content").text('Conect Failed.'); }); socket.on('connect',function(){ console.log('connected'); socket.on('msg push',function(msg){ $("#content").text(msg); if(msg.indexOf("Can")!==-1){ $("#content").append('<button value="yes">Yes</button>'); $("#content button").click(function(){ socket.emit('msg send',$("#content button").val()); }); } console.log(msg); if(msg.indexOf("OK")!==-1){ $("#content").text(msg); } }); socket.on('msg time',function(msg){ $("#content").text(msg); console.log(msg); $("#content").append('<button value="bored">I am bored.</button>'); $("#content button").click(function(){ socket.emit('msg send',$("#content button").val()); }); }); socket.on('msg end',function(msg){ $("#content").text(msg); socket.disconnect(); }); }); </script> </head> <body> <h1>I am The Client</h1> <div id="content"> </div> </body> </html>
◎server.js
var io = require('socket.io').listen(8000); var timeout; var interval; io.sockets.on('connection',function(socket){ console.log('Client Connect.'); socket.emit('msg push', 'Can You Hear Me?'); socket.on('msg send',function(msg){ console.log(msg); if(msg==='yes'){ socket.emit('msg push','OK. I display Time.'); timeout=setTimeout( function(){ interval=setInterval(function(){ socket.volatile.emit('msg time',new Date().toString()); },1000); },1000 ); }else if(msg==='bored'){ socket.emit('msg end','All right,SeeYa.'); clearInterval(interval); clearTimeout(timeout); } }); });