[英]NodeJS emit event is not firing
我有这个NodeJS
代码,我也不知道为什么不emit
函数,只有当我将它放在setTimeout
这样的回调函数中时才会触发
const url = require('url');
const WebSocket = require('ws');
const events = require('events');
WebSocketServer = new events.EventEmitter();
WebSocketServer.start = (server) => {
const wss = new WebSocket.Server({server});
console.log('websocket started');
WebSocketServer.emit('started');
};
module.exports = WebSocketServer;
在这里,我测试是否发出:
const ExpressServer = require('./server/api/expressServer');
const WebsocketServer = require('./server/websocket/websocketServer');
WebsocketServer.start(ExpressServer.server);
WebsocketServer.on('started', () => {
console.log('web socket emitted');
ExpressServer.start();
});
似乎您没有立即使用EventEmitter和Websocket。 以下是两者结合的工作示例:
const EventEmitter = require('events').EventEmitter(); //You didnt call EventEmitter() in your code
const WebSocket = require('ws');
const ws = new WebSocket(//Your path here);
ws.on('open', function open() {
console.log('websocket started');
EventEmitter.emit('started');
});
好的,问题出在顺序上,先听事件,然后触发功能:
const ExpressServer = require('./server/api/expressServer');
const WebsocketServer = require('./server/websocket/websocketServer');
WebsocketServer.on('started', () => {
console.log('web socket emitted');
ExpressServer.start();
});
WebsocketServer.start(ExpressServer.server);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.