Я реализовал соединение socket.io в своем приложении Swift. Я использую сервер node.js на сервере. Теперь я могу отправлять сообщения указанному пользователю c, например:
let connectedClients = new Map();
if(connectedClients.has("1")) {
var socketInformation = connectedClients.get("1") // for userID 1
var socketID = socketInformation.client.id
io.sockets.connected[socketID].emit('message', req.query.message)
}
По сути, connectedClients содержит пары ключ-значение, такие как userID:socketID
.
Что я хочу Что делать дальше, это отправлять сообщение всем моим подписчикам, когда я публикую обновление. Поэтому, когда я публикую обновление, я добавляю его в свою базу данных MySQL, но для пользователей, которые находятся в сети, я хочу отправить обновление в режиме реального времени на их экран. Как я могу go об этом?
Мне кажется, у меня есть три варианта:
- Я перебираю все подключенные клиенты и проверяю, являются ли они моими последователями;
- Я перебираю всех своих подписчиков и проверяю, есть ли они на карте;
- Я создаю "комнату" для всех подписчиков каждого пользователя и отправляю сообщение в эту комнату.
Но я чувствую, что должен быть лучший путь. Какие-либо предложения? Кроме того, мне интересно, является ли моя карта (connectedClients) отличным способом для хранения текущих подключенных устройств.