簡體   English   中英

Socket.io 全局發送函數 - Node.js

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM