【发布时间】:2020-11-05 07:23:54
【问题描述】:
我有这段代码,每当用户访问这个特定端点时,它应该向 python 客户端发送一条消息,然后获取一些数据,然后将其作为回调返回,这样我就可以向用户显示数据.
这是服务器端代码(NodeJS):
app.get('/hueapi/lights', verifyToken, (req,res) => {
const bridgeIDFromApp = req.header('bridgeID');
const socketID = socketRefDic[bridgeIDFromApp]['socketID'];
io.to(socketID).emit('getAllLights', 'getAllLights', function(data){
res.send(data); // The callback function that shows the data given by the python client
});
});
它只是向有问题的 python 客户端发送一个简单的“getAllLights”消息,然后运行提供数据的函数。
这是客户端代码(python):
def getAllLights(data):
lightData = requests.get('http://localhost:4000/lights/')
return lightData
我的回拨是错误的还是?我只想在检索数据后直接将数据发送回给用户。
编辑:
我现在使用 io.to(...).emit(...) 而不是 io.send(...).emit(...) 但我仍然收到错误消息说我正在广播,但我不是,是吗?
【问题讨论】:
-
回调或“确认”不支持广播
-
@Marc 我没有做广播,我正在向特定的套接字发送一些东西不是吗?
-
在标题中你说“在命名空间广播”并调用
io.send(...)所以它是一个广播;)编辑:io.send方法记录在哪里?! -
@Marc 那么我如何通过对特定套接字/客户端使用回调来实现相同的目标呢?有没有可能,我什至发现很难找到发送特定套接字数据的正确语法,有很多答案说不同的事情。
-
现在有广播中的 ack 回调方法。如果需要,您可以自己实现。
标签: javascript python node.js sockets socket.io