Socket.io 在其他服务器文件中发出事件

Socket.io emitting events inside other server files

是否可以在其他一些 node.js 服务器文件中发出事件? 就像我有 app.js 运行 和另一个文件 运行 一样。

在我的另一个服务器文件中

var io = require('socket.io');

在文件中还有类似这样的内容(我想将此数据 - 价格发送给客户)。

io.emit('price', { price: price});

我得到的错误是 io.emit 不是函数。知道我做错了什么吗?

我改成了

var io = require('socket.io')();

它现在可以正常工作(没有出现错误)但仍未将其发送给客户端。

您需要有一个 io 对象挂接到您的网络服务器(以接收传入的 socket.io 连接),然后您需要共享(通过导出或调用函数并传递io 对象)一个 io 对象和任何其他想要使用它的文件。

您没有显示太多代码,但假设您在主 express 文件中初始化 socket.io:

app.js

var express = require('express');
var app = express();
var server = app.listen(8080);
var io = require('socket.io')(server);

// load msg module and give it the io variable
var msg = require('./msg.js')(io);

msg.js

// define module constructor that accepts the io variable
var io;
module.exports = function(importIO) {
    io = importIO;
}

// elsewhere in the module
io.emit(...)