2012.07.14 achamaro
どうもです!
書けたり書けなかったりなので、書けるときに書いちゃおうって事で書きます!
最近NodeJSのお勉強をしてまして
先にも書いたように「node.js websocket」でググると
var http = require('http') , httpServer = http.createServer() , fs = require('fs'); httpServer.on('request', function(req, res) { fs.readFile(__dirname + '/public' + req.url.replace(/\/$/, '/index.html'), function(err, data) { if (err) { res.writeHead(403); res.write('Not found'); res.end(); } else { res.end(data); } }); }); httpServer.listen(8080);server.jsと同階層にあるpublicディレクトリ内に
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="js/index.js"></script> </head> <body> test </body> </html>えー。特に説明する事はありません。
var ws = new WebSocket('ws://localhost:8080'); ws.onopen = function() { console.log("open"); }; ws.onmessage = function(e) { console.log("message"); console.log(e.data); }; ws.onerror = function() { console.log("error"); }; ws.onclose = function() { console.log("close"); };WebSocketで発生するイベントをそれぞれ
node server.jsでサーバー起動してlocalhost:8080に接続してみると
var crypto = require('crypto'); httpServer.on('upgrade', function(req, socket, head) { var acceptBase = req.headers['sec-websocket-key'] + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; var sha1 = crypto.createHash('sha1'); sha1.update(acceptBase, 'utf8'); var acceptSha1 = sha1.digest('base64'); var handshake = ["HTTP/1.1 101 Switching Protocols" , "Upgrade: websocket" , "Connection: Upgrade" , "Sec-WebSocket-Accept: " + acceptSha1 , "Sec-WebSocket-Protocol: chat" ].join("\r\n") + "\r\n\r\n"; socket.write(handshake); });HTTP Upgradeリクエストヘッダに含まれる