【Socket.io】roomの作成と参加

socket.ioのroom機能のメモ

var io = require("socket.io");

io.on("connection", function(socket){

	// roomへ参加
	socket.join( "roomName" );

	// 特定のroomへbroadcast送信
	socket.broadcast.to( "roomName" ).emit("from server", "hoge");

	// 特定のroomの全員に送信
	socket.to( "roomName" ).emit("from server", "fuga");
});
広告

socket.io 基礎

基本的なもののまとめ。

サーバー

var app = require("http").createServer(handler),
    io = require("socket.io")(app),
    fs = require("fs");
 
// port番号の設定(1337)
app.listen(1337);
 
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.on("connection", function(socket){
	// ここに置くと、接続してきたクライアントのみに"hello"というテキストを"first"に送る。
	socket.emit("first", "hello");
	
	// broadcastを使用すると、"hi"というテキストを"second"に送る。
	socket.broadcast.emit("second", "hi");

	// 接続しているクライアント全てに"bye"を送る
	io.sockets.emit("third", "bye");


	// クライアントから"hoge"でデータが送られてきた際に実行される。
    socket.on("from client".function(data){
		// 送られてきたデータはdataに格納される。jsonも可
        console.log(data.test); // てすと
    });
    
     
});

クライアント

var socket = io("http://localhost");

socket.on("first", function(data){
	console.log(data); // "hello"
});
socket.on("second", function(data){
	console.log(data); // "hi"
});
socket.on("third", function(data){
	console.log(data); // "bye"
});

socket.emit("from client", {
	test: "てすと"
});