Я использую laravel конечную точку API (на данный момент), которая публикует мой канал как
Redis::publish('new_message_sent',json_encode($request->all()));
И использую узел как
var app = require("express")();
var server = require("http").Server(app);
var io = require("socket.io")(server);
var redis = require("redis");
require("dotenv").config();
const APP_PORT = 6999;
server.listen(APP_PORT, () => {
console.log("App is running at:", APP_PORT);
});
io.on("connection", function(socket) {
console.log("Client Connected With Socket ID:", socket.id);
var redisClient = redis.createClient();
redisClient.subscribe("new_message_sent", function(channel, message) {
console.log("Subscribed", channel, message);
});
redisClient.on("message", function(channel, message) {
message = JSON.parse(message);
console.log("New Message Data", message);
socket.emit(channel, message);
});
redisClient.on("disconnect", function() {
redisClient.quit();
});
});
Теперь я хочу как-то publi sh канал, на который подписаны только те пользователи, чьи статусы не оплачиваются в моем mysql db, так что сообщение может быть отправлено только тем, а не остальным? Или даже если все подписаны, как я могу отправлять сообщения только тем, кто не оплачивается (опять же, я не знаю, как получить всех неоплачиваемых пользователей по коду на этой стороне узла. Можно ли как-нибудь отправить всех этих неоплачиваемых пользователей при публикации канала? на стороне laravel И что мне нужно делать с этими пользователями, когда они находятся в моем коде стороны узла?)? Пожалуйста, помогите мне, я застрял в этом в течение долгого времени, и это первый раз, когда я использую socket.io и node.