首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >播放python-socketio时不支持回调

播放python-socketio时不支持回调
EN

Stack Overflow用户
提问于 2020-07-16 01:49:45
回答 1查看 126关注 0票数 0

我有一段代码,每当用户访问这个特定的端点时,它都应该向python客户端发送一条消息,然后python客户端获取一些数据,然后将其作为回调返回,这样我就可以向用户显示这些数据。

这是服务器端代码(NodeJS):

代码语言:javascript
复制
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
  });
});

它只是将一个简单的'getAllLights‘消息发送到有问题的python客户端,然后运行提供数据的函数。

这是客户端代码(python):

代码语言:javascript
复制
def getAllLights(data):
    lightData = requests.get('http://localhost:4000/lights/')
    return lightData

是我做错了回电还是?我只想在检索数据后将数据直接发送回用户。

编辑:

我现在正在使用io.to(...).emit(...)而不是io.send(...).emit(...),但我仍然收到错误,说我正在广播,但我没有,不是吗?

EN

回答 1

Stack Overflow用户

发布于 2021-07-01 08:09:36

我认为ack方法不会为您工作,除非它也在python端实现。你仍然收到广播错误的原因是因为io.to没有返回一个套接字,它返回了一个可以广播的房间。

在客户端只有一个单独的端点可能会更容易。在我看来,您的python代码甚至不会尝试这样做。python代码应该仍然能够写入套接字。

因此,要实现自己的ack函数,只需将ack消息写入套接字即可。如果需要对其进行状态命名空间,则必须为python代码包含一个地址,以便在getAllLights消息中引用该地址。

节点:

代码语言:javascript
复制
app.get('/hueapi/lights', verifyToken, (req,res) => {
  const bridgeIDFromApp = req.header('bridgeID');
  const socketID = socketRefDic[bridgeIDFromApp]['socketID'];
  const uniqAck = "some unique endpoint path";
  
  const socket = getSocketByID(socketID);
  socket.on(uniqAck, (data) => res.send);
  socket.emit('getAllLights', 'getAllLights:'+uniqAck);
});

Python:

代码语言:javascript
复制
def getAllLights(data):
    lightData = requests.get('http://localhost:4000/lights/');
    return (lightData, split(data, ":")[1]); // split if its not already done by this point.

// capture 'value' from getAllLights when it is called...
socket.emit(value[1], value[0]); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62920907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档