Express 路由器 + WebSocketServer - 在 POST 上发送消息

Express router + WebSocketServer - sending message on POST

这就是我目前的情况,我正在努力寻找解决方案以便:

ws api here

 router.post('/', function (req, res) {
// Need to send ws.send() with post data
})


wss.on('connection', function(ws) {
  ws.on('message', function(message) {
    console.log('r : %s', message);
  });
  // ws is only defined under this callback as an object of type ws
});

您可以像这样使用事件:

//Create an event
var event = require('events').EventEmitter();

router.post('/', function (req, res) {
   // fire an event
   event.emit('homePage')
})

wss.on('connection', function(ws) {
    ws.on('message', function(message) {
     console.log('r : %s', message);
    });

    // listen the event
    event.on('homePage', function(){
        ws.emit('someEvent');
    });
});

我收到一个错误:

TypeError: Cannot read property 'emit' of undefined

我想我可能会误解或遗漏一些对其他人来说显而易见的东西。请求 emit 调用时出现错误:

router.post('/', function (req, res) {
   // fire an event
   event.emit('homePage') <----------- HERE
})

我在开头加上:

var event = require('events').EventEmitter();

更新! 我解决了它通过这个 2:

更改需要事件的行
var events = require('events');
var eventEmitter = new events.EventEmitter();

之后就可以了。