[英]Socket.io global sending Function - Node.js
我構建了一個簡單的 node.js / socket.io 應用程序。 我需要為一個模塊發出事件,該模塊可以通過其他模塊訪問,這樣我就可以在有新的數據庫條目時發送套接字消息。
像這樣的東西:
function sendWebsocketEvent (whereToSend, EventName, Payload) { io.in(whereToSend).emit(EventName, Payload) }
我該如何處理?
我試過了:
-- app.js --
// Websockets var http = require('http').createServer(app) var io = require('socket.io')(http) http.listen(3000, function () { console.log('listening on Port *:3000') }) require('./WebSockets/socketInit')(io)
-- socketInit.js --
module.exports = (ioInput) => { const io = ioInput return io }
-- sendSockets.js --
const io = require('./socketInit') module.exports = { sendWebsocketEvent (whereToSend, EventName, Payload) { io.in(whereToSend).emit(EventName, Payload) } }
我試圖在另一個模塊中調用這個函數:
const sendSockets = require('../WebSockets/sendSockets') . . . sendSockets.sendWebsocketEvent('user', 'databaseUpdate', 'dataToSend') . . .
但這不起作用。
有沒有其他方法可以完成這項工作?
Server.js
內部
const express = require('express');
const app = express();
const server = require('http').createServer(app)
const io = socket.listen(server);
global.io = io;
const port = process.env.PORT || 5500;
server.listen(port, () => console.log(`%s 🚀 Server is listening on port ${port}`, chalk.green('✓')));
// socket io connection
let interval;
io.on("connection", socket => {
console.log("New client connected");
if (interval) {
clearInterval(interval);
}
});
並像那樣發射到你想要的地方
global.io.emit('EventName', data);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.