2016-11-01 23 views
0

在我的项目上,每个用户都加入了他的独特频道(我知道用户也在socked id频道中)。socket io独特频道 - 发射时不指定房间

客户

var socket = io('http://localhost:8000/'); 
var room = "unique_id"; 

socket.on('connect', function() { 
    socket.emit('room', room); 
}); 

socket.on("unique_id", function() { 
    console.log("test"); 
}) 

在服务器端,我检查了房间一个用户连接到:在连接

{ 'DQOt2DX2IsHh-m9nAAAC': { sockets: { 'DQOt2DX2IsHh-m9nAAAC': true }, length: 1 }, 
'unique_id': { sockets: { 'DQOt2DX2IsHh-m9nAAAC': true }, length: 1 } } 

我现在用的大象

var io = require('socket.io')(8000); 

io.on('connection', function(socket) { 
    var room; 

    socket.on('room', function(unique_id) { 
     socket.join(unique_id); 
     room = unique_id; 
     console.log(io.sockets.adapter.rooms); //show the unique_id room 
     io.to(room).emit('hello', 'msg'); 
    }); 

    socket.on(room, function(data) { 
     console.log(room); 
    }) 

}); 

输出。 io发送给客户如下

$client = new Client(new Version1X('http://localhost:8000')); 
$client->initialize(); 
$client->emit('unique_id', ['news' => 'bar']); 
$client->close(); 

我觉得我的服务器端有问题,但我无法解决它。我需要处理unique_id的事件,但是如何?

回答

0

服务器端

var io = require('socket.io')(8000); 

io.on('connection', function(socket) { 
    var room; 

    socket.on('room', function(address) { 
     socket.join(address); 
     room = address; 
     console.log(io.sockets.adapter.rooms); 
     io.to(room).emit('hello', 'msg'); 
    }); 

    socket.on('message', function(data) { 
     console.log(data.unique_id); 
     io.to(data.unique_id).emit('hello', 'msg'); 
    }) 

}); 

elephant.io

$client->emit('message', ['unique_id' => 'foo']); 

这是我的解决方案,它为我工作。