0

我在留言板上查看了很多类似的问题并阅读了相关文档,据我所知,我似乎做的一切都是正确的。

节点服务器代码

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')

日志文件和终端输出

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

4

1 回答 1

1

在这里回答我自己的问题。抱歉,如果有人试图解决这个问题,因为没有需要解决的信息。

我的问题中没有显示代码,因为我错误地认为其他代码不会导致问题。

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

对我来说不幸的是,我不记得为什么我的剧本中首先出现了那句话。自我注意:多使用评论。

我将在问题标签中添加 eventlet。如果有人对为什么会发生这种情况有任何见解,那就太好了。

于 2020-01-01T15:08:26.410 回答