socket io unique channel - 在不指定房间的情况下发出

时间:2016-11-01 10:05:29

标签: socket.io

在我的项目中,每个用户都加入了他的独特频道(我知道用户也在一个socked id频道中)。

客户端

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");
})

在服务器端,我正在检查用户所连接的房间:

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);
    })

});

连接时的输出

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

现在我使用elephant.io向客户端发出如下

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

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

1 个答案:

答案 0 :(得分: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']);

这是我的解决方案,对我有用。

相关问题