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', => {})
。
目前,您只是发送io
variables,但是每个请求和发送都需要在连接事件中进行封装。 否则,socket.io如何知道发送给谁,或者甚至有人发送给它?
这只能在beacons.js
和router.get('/buy')
部分内完成,因为router.get('/buy')
包含在连接中的路由)将不起作用。