大体やりたいことができるようになってきた。
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); setInterval(function(){externalFunc()},2000); }); function externalFunc(){ var _label = new Date().getSeconds(); var _content = Math.random(); socket.emit('signal1',{message:'external function emitted',label:_label,content:_content}); } });
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> <link rel="stylesheet" type="text/css" href="http://netdna.bootstrapcdn.com/flatstrap/css/bootstrap.css"> <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){ var label = data["label"]; var content = data["content"]; $("#dataarea").append('<tr><td>'+label+'</td><td>'+content+'</td></tr>'); }); }); </script> <style> body { margin: 30px 30px; } </style> </head> <body> <h2>socket.io with MongoDB</h2> <h3 id="code"></h3> <h4>Emitted data</h4> <table id="dataarea" class="table table-striped"> <thead> <tr> <th>data label</th> <th>data content</th> </tr> </thead> <tbody> </tbody> </table> <p id="signal"></p> </body> </html>