・setTimeoutの使い方、関数の評価タイミング
・io.connectの中のsocket変数のスコープ
というJavaScriptの基本的なところの勉強になる。
app.js
var express = require("express"); var app = express(); var io = require("socket.io").listen(app.listen(3000)); //express code app.get("/",function(req,res){ res.sendfile(__dirname + '/index.html'); }); app.use(express.static(__dirname)); //socket.io code io.sockets.on('connection',function(socket){ socket.emit('connect_ok',{message:'websocket communication ready'}); socket.on('trigger1',function(data){ console.log(data); setTimeout(function(){externalFunc()},3000); }); function externalFunc(){ socket.emit('signal1',{message:'external function emitted'}); } });
index.html
<html> <head> <title>socketmongo</title> <meta charset="UTF-8"> <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> <script src="http://cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.16/socket.io.min.js"></script> <script> $(function(){ var socket = io.connect(); socket.on('connect_ok',function(data){ console.log(data); $("#code").text(data["message"]); socket.emit('trigger1',{my:'data'}); }); socket.on('signal1',function(data){ $("#signal").text(data["message"]); }); }); </script> </head> <body> <h1>socket.io with MongoDB</h1> <h2 id="code"></h2> <p id="signal"></p> </body> </html>