javascript - Socket.io 全局发送函数 - Node.js

标签 javascript node.js socket.io

我构建了一个简单的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);

关于javascript - Socket.io 全局发送函数 - Node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59921266/

相关文章:

javascript - 使用 d3.js 重复世界地图投影?

javascript - 使用php形式的不同按钮发送不同的输入值

node.js - 使用 node-http-proxy 访问响应 header

javascript - 如何使用带有 require 和模块导出的 npm 包作为普通 JS 库

javascript - 如何防止重复触发按键 - JavaScript/jQuery

javascript - 如何使用 jquery 调用抓取 iframe 内按钮的值?

javascript - 放大时重置单张 map 等值线,缩小时将其放回原处

node.js - Deno 1.1.1 静态 HTTP 服务器

java - netty-socketio服务器,如何处理socket.io客户端认证请求?

node.js - 使用 JWT 进行 Socket.io 身份验证