socketio发出事件的问题-nodejs服务器的python 2.7客户端

时间:2020-01-01 12:31:40

标签: python node.js socket.io eventlet python-socketio

我已经看过留言板上的许多类似问题,并阅读了相关的documentation,从中可以看出,我似乎做对了所有事情。

节点服务器代码

io.on('connection', function(socket){
  logger.log('info', `\n${Date().toLocaleString('short')}\n:: socket.io client connection established ::\nsocket.id: ${socket.id}\nsocket.handshake.address: ${socket.handshake.address}`)

  socket.on('pythonTest', function(){
    logger.log('info', `HI THIS IS PYTHON TALKING`)
  });

  socket.on('userConnect', function(userAgent){
    logger.log('info', `\nhttp user connected\n${userAgent}`)
  });
});

python客户端代码

import socketio 
from pprint import pprint
socket = socketio.Client()
socket.connect('http://localhost:3000')
pprint(vars(socket))
socket.emit('pythonTest', 'pythonTest')

logfile and terminal outputs

当我启动python脚本时,我可以看到套接字连接有效,但是'pythonTest'事件出了点问题。事件'userConnect'的行为符合预期,但是'userConnect'的发射器来自网络浏览器,这使我相信问题出在python方面,而不是节点中的事件处理程序。我认为socket.emit('pythonTest','pythonTest')特别有问题,但我不知道它可能是什么。

1 个答案:

答案 0 :(得分:1)

在这里回答我自己的问题。很抱歉,如果有人想找出原因,因为解决所需的信息不存在。

我的问题中没有显示代码,因为我错误地认为其他代码无法引起问题。

问题是由事件库引起的,特别是 eventlet.monkey_patch() 因此,如果您遇到类似的问题并将其包含在脚本中,请尝试将其注释掉。

对我来说不幸的是,我不记得为什么我一开始在脚本中有该行。自我注意:多使用注释。

我将在事件标签中添加事件变量。如果有人对为什么会这样有任何见解,那将是很好的。