Express router + WebSocketServer - 在POST上发送消息

时间:2015-07-05 08:14:52

标签: node.js express websocket

这是我到目前为止所做的,我正在努力找到一个解决方案:

  • 连接始终保持活动状态,因此我可以处理状态更新
  • 我可以使用POST请求中的数据向客户端发送websocket消息

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
});

2 个答案:

答案 0 :(得分:7)

您可以使用以下事件:

//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');
    });
});

答案 1 :(得分:1)

我收到了一个错误:

  

TypeError:无法读取属性' 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();

之后它正在工作。