Express 路由器 + WebSocketServer - 在 POST 上发送消息
Express router + WebSocketServer - sending message on POST
这就是我目前的情况,我正在努力寻找解决方案以便:
- 连接始终保持活动状态,因此我可以处理状态更新
- 我可以使用来自 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
});
您可以像这样使用事件:
//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();
之后就可以了。
这就是我目前的情况,我正在努力寻找解决方案以便:
- 连接始终保持活动状态,因此我可以处理状态更新
- 我可以使用来自 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
});
您可以像这样使用事件:
//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();
之后就可以了。