SocketIO发射不会在高速路线内发射

下面的工作正常,我可以得到我的客户端应用程序的http响应,但socketio发射似乎并不工作。 我不知道为什么它不开火。

这是我的代码(删除了一些部分):

app.js

var express = require('express'); var port = process.env.PORT || 3000; var socketio = require('socket.io'); var app = express(); var server = require('http').Server(app); var io = socketio(server); var beacons = require('./routes/beacons')(io); app.use('/beacons', beacons); server.listen(port, () => { console.log('Listening on port '+port); }); io.on('connection', (socket) => { socket.on('beacon:show', function(data) { console.log('Show beacon: ' + data) socket.broadcast.emit('beacon:draw', data) }) }); module.exports = app; 

beacons.js

 var express = require('express'); var router = express.Router(); module.exports = function(io) { router.get('/buy', function(req, res) { io.emit('beacon:show', {data: someData}) // Not Firing res.json({success: true}) }) return router } 

你需要将你的io.emit()包装在io.on('connection', => {})

目前,您只是发送iovariables,但是每个请求和发送需要在连接事件中进行封装。 否则,socket.io如何知道发送给谁,或者甚至有人发送给它?

这只能在beacons.jsrouter.get('/buy')部分内完成,因为router.get('/buy')包含在连接中的路由)将不起作用。