socket.ioについて

kishidaです。今年初投稿ということであけましておめでとうございます。といっても既に2月なので遅すぎる挨拶ですが。

今回はsocket.ioを使用してチャットの機能を作ったので使用感とメモ書きを書いていこうと思います。

server.js

var server = require(“http”).createServer(function(req, res) {
res.writeHead(200, {“Content-Type”: “text/html”});
var output = fs.readFileSync(“./index.html”, “utf-8”);
res.end(output);
}).listen(3000);
var io = require(“socket.io”).listen(server);
io.sockets.on(“connection”, function(socket) {
//index.htmlからhogeというリクエストを受け取る
socket.on(“hoge”, function() {
/*****処理*****/
//index.htmlにhogeというリクエストを投げる
socket.emit(‘hoge’, socket.id);
});
//終了時のイベント
socket.on(“disconnect”, function() {
/*****処理*****/
});
});

index.html

var socketio = io.connect(‘http://localhost:3000’);
//server.jsへhogeというリクエストを投げる
socketio.emit(“hoge”);
//server.jsからhogeというリクエストを受け取る
socketio.on(“hoge”, function(id) {
/*****処理*****/
});
//socketio.disconnect(); //切断

基本はemit()でリクエストを投げてon()でリクエストを処理する認識でいいと思います。
接続終了時にはdisconnectのリクエストが発生し、index.htmlで切断する場合は.disconnect()を使用します。

処理の流れがシンプルで作るだけなら非常に便利だと感じました。ただ要件によってはやり取りをするメソッドが増えてトレースが大変になりそうなのでなるべく冗長を意識する必要がありそうです。

memo

.disconnect()の後自由なタイミングで再接続したい場合

socketio.connect();

で再接続できる。

 

リクエスト名に「connect」を使用できない
index.html

socketio.emit(“connect”);

server.js

socket.on(“connect”, function(data) {
console.log(‘connect’);
});

予約語の類だと思うのですが今のところリクエストも発生していないためわかったらまた報告します。

 

参考
http://www18407ue.sakura.ne.jp/wordpress/?p=200

カテゴリー: javascript, mysql, server

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*