node.js socket.io使ってみる

socket.ioを使ってみた。まずhttpで接続してクライアント用のコードを取得し、その中でwebsocketのconnectionを作りイベントをemitしあう。

▼コード

・サーバ側

var http = require('http');                                   

var socketIO = require('socket.io').listen(8080);;            

var httpRouter = require('./httpRouter.js');                  

                                                              

var requestHandler = function(req, res) {                     

    httpRouter(req, res);                                     

};                                                            

                                                              

var server = http.createServer(requestHandler);               

server.listen(8000);                                          

                                                              

socketIO.sockets.on('connection', function(socket) {          

    console.log('connection');                                

    socket.emit('news', {hello: 'world'});                    

    socket.on('received', function(data) {                    

        console.log(data.my);                                 

    });                                                       

});                                                           

 

・クライアント側

<script src='/socket.io/socket.io.js'></script>

<script>

    var socket = io.connect('http://192.168.56.2:8080');

    socket.on('news', function(data) {

        console.log(data.hello);

        socket.emit('received', { my: 'mydata'});

    }); 

</script>

 
▼注意点
・クライアント側で以下のようにsocket.io.jsを読み込んでいるがサーバ側では読み込むパスを変更している
<script src='/socket.io/socket.io.js'></script>
→サーバ側ではjs/socket.io.jsを読むようにしている
(もともとsocket.ioの直下にsocket.io.jsはない)
 
・ var socket = io.connect('http://192.168.56.2:8080');
ここで注意点としてはポート番号を付け忘れないように。
また、サーバスクリプト起動時に以下のような警告が出る場合はポート番号がすでに使用されている
→ warn  - error raised: Error: listen EACCES