node.js,socket.ioでchat

をつくった

今日、学んだこと

  • ブログのコードはあてにならないから、公式の[HOW TO USE]をみる

バージョン書いてあれば問題ないけど、あえて古いバージョン使う気にならないし、古いコードはすぐ動かなくなるし・・・

  • socket.ioは「unhandled socket.io url」というよく分かんないログを吐きまくる

公式のサンプルでもそうだったんだけどなー

あてにならないといいつつコード

  • index.html
<html>
 <head>
  <title>node.jsでchat</title>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
  <script src="/socket.io/socket.io.js"></script>
  <script>
  <!--
  var socket = io.connect('http://localhost');
  socket.on('GetMessage', function (data) {
   $("#mes").prepend("<p>"+data+"</p>");
  });
  $(function(){
   $("#send").click(function(){
    socket.emit("SendMessage",{message:$("#message").val()});
   });
  })
  </script>
  </head>
  <body>
   <input type=text id=message>
   <input type=button id=send value=send>
   <div id=mes></div>
 </body>
</html>
  • chat.js
var app = require('http').createServer(handler)
  , io = require('socket.io').listen(app)
  , fs = require('fs')

app.listen(8888);

function handler (req, res) {
	fs.readFile(__dirname + '/index.html',
	function (err, data) {
		if (err) {
			res.writeHead(500);
			return res.end('Error loading index.html');
		}

		res.writeHead(200);
		res.end(data);
	});
}

io.sockets.on('connection', function (socket) {
	socket.on("SendMessage",function(data){
		socket.emit('GetMessage', "←"+data.message);
		socket.broadcast.emit('GetMessage', data.message);
	});
});

セキュリティのためか?htmlの後、はてな記法が機能しなくなる・・・?