0

ソケットのイベント バインディングは別のモジュールに移動されます。

exports.bind = function(socket) {
    socket.on('join', function(data) {
        socket.join(data.type);
    });
    socket.on('message', function(data) {
    global.io.sockets.in('rooma').emit('message', data);
    });
}

サーバー.js:

var app = express();

//creating socket server
server = http.createServer(app);
io = global.io = require('socket.io').listen(server, {'log level': 3});

io.sockets.on('connection', function(socket) {
    //binding events on socket
    events.bind(socket, io);
});

問題は、そのメッセージが「rooma」のクライアントに送信されないことです。しかし、それをグローバルに発行すると:

global.io.sockets.emit('message', data);

できます。どこに問題がありますか?クライアントが確かに部屋に属していることをテストしました。

4

1 に答える 1

1

これは、メッセージを送信したい部屋からイベントの初期化を取得したときに機能します。

exports.bind = function(socket) {
        socket.on('join', function(data) {
            socket.join(data.type);
        });
        socket.on('message', function(data) {
            socket.get('room', function (error, room) {
                io.sockets.in(room).emit('message', data);
            });
        });
    }
于 2013-02-07T20:01:24.253 に答える