動かざることバグの如し

近づきたいよ 君の理想に

Socket.IOの送信コマンドまとめ

基本

var port = 3000
var io = require('socket.io')(port)

io.sockets.on("connection", function (socket) {
    io.sockets.emit("info", "全員に送信") //送信元含む全員に送信
    io.emit("info", "省略可") //上と同じ
    socket.broadcast.emit("info", "送信元以外に送信") //送信元以外の全員に送信
    io.to(socket.id).emit('info', '送信元のあなただけ') //特定のユーザーのみ(socket.idで送信元のみに送信)
    //とあるユーザーから「hogehoge」メッセージを受け取ったらpiyopiyoで送信
    socket.on("hogehoge", function (message) {
        io.emit("piyopiyo", message) //送信元含む全員に送信
        socket.broadcast.emit("piyopiyo", message) //送信元以外の全員に送信
        io.to(socket.id).emit('info', '送信元のあなただけ') //特定のユーザーのみ(socket.idで送信元のみに送信)
    })
})

Namespace

var port = 3000
var io = require('socket.io')(port)
var nspace = io.of('/onamae');

// io.sockets.on("co… → nspace.on("connectiに変化
nspace.on("connection", function (socket) {
    nspace.emit("info", "全員に送信") //Namespace内の送信元含む全員に送信
    //Namespace内の送信元以外の全員に送信は無い・・・・?
    nspace.to(socket.id).emit('info', '送信元のあなただけ') //Namespace内の特定のユーザーのみに送信(socket.idで送信元のみに送信)
    //とあるユーザーから「hogehoge」メッセージを受け取ったらpiyopiyoで送信
    socket.on("hogehoge", function (message) {
        nspace.emit("piyopiyo", message) //Namespace内の送信元含む全員に送信
        socket.broadcast.emit("piyopiyo", message) //Namespace内の送信元以外の全員に送信
        nspace.to(socket.id).emit('info', '送信元のあなただけ') //Namespace内の特定のユーザーのみに送信(socket.idで送信元のみに送信)
    })
})

ちなみにクライアント側

var s = io.connect("ws://nyaaz.info:3000/hogehoge");

room

var port = 3000
var io = require('socket.io')(port)

io.sockets.on("connection", function (socket) {
    socket.on("join room", function () {
        socket.join("room") //入室許可
        io.sockets.in("room").emit("info", "全員に送信") //Room内の送信元含む全員に送信
        socket.broadcast.to("room").emit("info", "送信元以外に送信"); //Room内の送信元以外の全員に送信
        io.sockets.connected[socket.id].emit("info", "送信元のあなただけ") //Room内の特定のユーザーのみ(socket.idで送信元のみに送信)
    })
})