サーバー側でのioオブジェクトの宣言が間違っていたみたいで無駄にハマった。
var ioの宣言はここを参考に
http://net.tutsplus.com/tutorials/javascript-ajax/real-time-chat-with-nodejs-socket-io-and-expressjs/
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('news',{hello:'world'}); socket.on('my other event',function(data){ console.log(data); }); });
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('news',function(data){ console.log(data); $("#code").text(data["hello"]); socket.emit('my other event',{my:'data'}); }); }); </script> </head> <body> <h1>socket.io with MongoDB</h1> <div id="code"></div> </body> </html>