繁体   English   中英

NodeJS发出事件未触发

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM