借助这个
answer
我解决了这个问题。
我曾经
publish
和
subscribe
在redis中。我创建了
订阅
我的频道
app.js
文件:
const server = http.createServer(application);
const wss = new WebSocket.Server({ server });
const WebSocket = require("ws");
const redis = require("redis");
// other codes ...
const redisClient = redis.createClient({
legacyMode: true,
});
const broadcastClient = redis.createClient();
broadcastClient
.connect()
.then(() => {
broadcastClient.subscribe("broadcast-channel", (message) => {
for (const client of wss.clients) {
if (client.readyState === WebSocket.OPEN) {
client.send(message);
}
}
});
wss.on("connection", (ws) => {
ws.on("message", (message) => {
console.log(`Message: ${message}`);
});
});
})
.catch((error) => {
console.log(error);
});
const run = () => {
if (cluster.isPrimary) {
for (let index = 0; index < numberCPUs; index++) {
cluster.fork();
}
cluster.on("exit", (worker, code, signal) => {
console.error(`worker ${worker.process.pid} died (${signal || code}). restarting it in a sec`);
setTimeout(() => cluster.fork(), 1000);
});
} else {
server.listen(port, () => {
console.log(`Worker ${cluster.worker.id} : started on ${port}`);
});
}
};
然后用
出版
,我发了信息。这是我要在其中广播消息的另一个文件:
const redis = require("redis");
const redisClient = redis.createClient();
await redisClient.connect();
redisClient.publish("broadcast-channel", "Hellow world!");