ソケットを切断する(別のページに変更する)と、socket.ioは自動的にソケットを認識しません。
あなたはIDと接続し、あなたの帆のコントローラで使用すると、ID thisよう
EDIT
にユーザーをサブスクライブするとき部屋を購読するには、あなたは、単に角度からのメッセージを送ることができますページによれば、ソケットを追跡するためにシステムを実装する必要があります。
まず、/ API /サービスでサービスを作成/して、それを置く:
module.exports = {
switchRoom: function (socket, to_id) {
var tmp = _.find(sails.mysubscribers, function (sub) {
return sub.socket === socket;
});
if (tmp) { // If user came from another page unsuscribe him
sails.sockets.leave(socket, 'Unique prefix' + tmp.roomId);
} else {
tmp = {
socket: socket
};
sails.mysubscribers.push(tmp);
}
if (!to_id) { // If the user leave remove him from the array
var index = sails.mysubscribers.indexOf(tmp);
if (index > -1) sails.mysubscribers.splice(index, 1);
} else {
tmp.roomId = to_id;
sails.sockets.join(socket, 'Unique prefix' + to_id);
}
}
};
その後、/config/sockets.jsにafterDisconnect機能を編集します。
今
module.exports.sockets = {
afterDisconnect: function (session, socket, cb) {
YourService.switchRoom(socket);
return cb();
}
};
、ときあなたはswitchRoomをする必要があります。YourService.switchRoom(req.socket, roomId)
ここでroomIdは角度によって送信されるIDです。
これだけです!
しかし、私は角度を使用しているので、ページの変更による実際の切断はありません。 – user3712353
ところで答えを編集します;) –