我有一个运行 React 应用程序的节点服务器,与 Socket.io 集成。一切正常。我还有一个使用相同数据的外部应用程序。我想要做的是,当数据发生变化时,发布到我的节点服务器,然后在响应中,将任何数据发送给当前订阅套接字的用户。
//SERVER CODE LIVES ABOVE HERE...
const io = require('socket.io')(server);
io.on('connection', (socket) => {
socket.on('create data', function(data) {
//a place to create data, once complete triggers everyone subscribed to get an update.
socket.emit('data created', data);
});
});
app.post('/api/datacreated/', function(req, res) {
//HOW DO I EMIT IN HERE?! - this is coming from an external resource
socket.emit('data created', data);
})
随时为您干杯!
Socket 是本地范围的。 io.sockets 不是,所以你可以这样做:
app.post('/api/datacreated/', function(req, res) {
//this is coming from an external resource
io.sockets.emit('data created', data);
})
对我有用的解决方案
const io = new Server(...)
global.io = io
app.post('/api/datacreated/', function(req, res) {
global.io.emit('data created', data);
})